JS入门到精通详解(1)

news2024/11/24 12:07:12

JavaScript概述(需要记)

  1. 什么是javascript?

是一门(基于对象)和(事件驱动)的(脚本语言)。
  1. js诞生于哪一年?哪个公司?谁?第一个名字叫什么?

1995年 网景 布兰登 liveScript
  1. JS的第一套标准:

ECMA-262
  1. js包含哪些部分?

  • ECMAScript (核心 书写语法和书写规则)

  • BOM(操作浏览器的部分 比如浏览器的滚动条)

  • DOM : Document Object Model (文档对象模型,JS操作文档流发生变化的属性和方法,就是操作自己在网页里面写的东西)

  1. java和javascript是什么关系?

  • 没有任何关系。

  1. js的作用是什么?

  • 实现页面特效

  • 实现交互

JS的三种书写方式(需要记)

  1. 行内式

a标签-书写在href属性上

点我一下

非a标签-书写在行为属性上

  1. 内嵌式

<script type="text/javascript"></script>

  1. 外链式

<script src=''></script>

: 外部引用脚本时,script标签中不要写任何内容,写了也不执行!

如何输出?

  1. alert() : 以警告框的方式输出,缺点是会阻止后面语句的执行。

如果括号中是数字就不须要加引号
如果是其它非数字数据要加引号(不区分单引号或双引号),在JS中只要加上引号就叫做字符串。引号嵌套时要注意不能交叉使用引号 ' "" ' " '' "JS语言中,所有的标点符号都是英文半角状态
  1. document.write() : 在页面中输出,缺点是会影响现有布局。

  1. console.log() : 在控制台中输出,会输出对象的详细信息。

JS中的换行

  1. 页面中

<br>(直接放在引号里就能用)

  1. 非页面中

\n : 换行

\t : 横向跳格(一次八个空格)键盘上Tab的功能

\ : 转义符,将具有特殊含义的符号转成普通字符

JS中的注释

  1. 单行注释

//注释内容

  1. 多行注释

/*注释内容、多行注释、段落注释、块注释*/

JS中的数据类型(需要记)

  1. 基本数据类型

  • Number (数字类型) 3 3.3 -4

1.整数和小数

2.js中可以表示数字的最大值(Number.MAX_VALUE)/(Number.MAX_VALUE 0以上最小值)

如果使用Number表示的数字超过最大值,则会返回一个Infinity(正无穷)

3.NaN 是一个特殊的数字,表示Not A Number

使用typeof检查一个NaN也会返回number

4.如果使用js进行小数(浮点数)计算,可能得到一个不精确的值,所以不要用js算钱等类似精确度高的数。

  • String (字符串) '' ""

1.js中字符串用引号连接起来

2.使用双引号或单引号都可以,但是不要混着用

3.引号不能嵌套,双引号不能放单引号,单引号不能放双引号

如果想双引号套双引号,引号外面加\,转译一下、\\表示一个\

  • **Boolean (布尔) **

1.只有两个true false

使用typeof检查一个布尔值也会返回Boolean。

  • null (表示空的对象)(定好将来放什么东西)

使用typeof检查一个null也会返回Object。

  • undefined (未定义)

使用typeof检查一个undefined也会返回Object。

  1. 复合数据类型

  • Object (对象).

JS中的命名规则(需要记)

  1. 只能包含(字母、数字、下划线、$)

  1. 不能以数字开头

  1. 不能是关键字或保留字(国家保留不让用的/例如电话号码999不能用,被国家保留)(蓝色)

  1. 要语义化

  1. 驼峰命名

  • 大驼峰 : HowAreYou 常用于 类名或构造函数名(每个单词首字母大写)

  • 小驼峰 : howAreYou 常用于 函数名(除第一个单词首字母小写,其他单词首字母大写)

how_are_you 常用于 变量名

  1. 匈牙利命名法

  • 整数 int i_num 以i开头的变量存储整数

  • 小数 float f_num 以f开头的变量存储小数

  • 字符 char ch 以c开头的变量存储一个字符

  • 字符串 String str 以s开头的变量存储一个字符串

  • 布尔 Boolean bool 以b或bo开头的变量存储布尔变量

  • 对象 Object o_div 以o开头的变量存储对象

  • 数组 array arr 以arr开头的变量存储数组

  • 函数 function fn 以fn开头的变量存储函数

7.报错里面有SyntaxError说明语法有问题

8.报错里面有ReferenceErroer说明引用类型错误,引用了一个不存在的东西

JS 变量

用于在内存中开辟空间,这个空间中存储数据,且随着程序的运行,空间中的数据会发生变化,所以称为变量。
  1. 声明变量

  • 显式声明 : var 变量名,变量名,变量名;

  • 隐式声明 : 变量名 = 值;(i=3) 没有关键字var 必须先通过赋值证明身份,否则报错

  1. 给变量赋值

  • 初始化变量/变量初始化: 在声明变量的同时给它赋值。i

  • 先声明变量,再赋值。(在声明变量时,没有给变量赋值,而是在后面使用的时候赋值) j

  • 例如:var i = 1,j;

j = 3;

  1. 注意:

  1. 一个变量名只能存储一个值

  1. 当再次给一个变量赋值的时候,前面一次的值就没有了

  1. 变量名称区分大小写(JS 严格区分大小写)

  1. 左边开辟空间,右边设置数值

  1. 没有赋值的时候,变量中的默认值为undefind,即意味着将来这个变量中要存放基本数据类型的数据//null表示空,这个变量没有任何数据,赋值为null,表示将要存放的对象

JS 运算符

自增自减运算符 ++ --

规则:
从左到右,如果遇到 变量 ++ (2个值) 先取出变量中的值参与其它运算,再自加1。
如果遇到 ++ 变量(1个值),直接取加1后的值参与运算。
先看到谁就先干啥,先看到++就先+1再算 先看到变量就先用变量
//声明一个变量
// var i = 3;
//    3  4
// // i ++;
// ++ i;
// console.log(i); //5


// var i = 3;
//   //        3  4
// console.log(i ++); //3
// console.log(i); //4

// var i = 3;
// //             4
// console.log(++ i); //4
// console.log(i); //4


// var i = 3;
// //         4   4  5   5  4
// var j = ++ i + i ++ + i --;
// //        4  +  4   +   5
// console.log(i,j);  //4  13


var i = 3;
//      3  4    5    5  6
var j = i ++ + ++i + i ++;
//      3   +   5    +  5  j = 13,i = 6
//       7    13 14  7  6
var k = ++i + j ++ + i --;
//       7   + 13   + 7  k = 27  j = 14 i = 6
console.log(i,j,k);  //6

算术运算符

* (乘) /(除) %(模/余数) -(减)

规则:
Number类型,直接运算
Number与String类型运算,先将String类型转为Number类型,如果是纯数字字符串,则转为数字,直接运算。如果不是纯数字字符串,则转为NaN,与NaN计算的结果,都是NaN
true(1) false(0) null(0) undefined(NaN)
数字*字符串,将字符串自动转为数字,如果是纯数字字符串,则转为数字,正常相乘,如果字符串里面除了数字还有别的东西,则报NaN(Not a Number)
console.log(2 * 3); //6
console.log(2 * '3'); //6
console.log('2' * '3'); //6
console.log(2 * '3a'); //NaN (Not a Number)
console.log(2 * true); //2
console.log(2 * false); //0
console.log(2 * null); //0
console.log(2 * undefined); //NaN

console.log(10 / 2); //5
console.log(10 / '2'); //5
console.log(10 / '2a'); //NaN
console.log(true / 2); //0.5
console.log(false / 2); //0
console.log(2 / null); //Infinity 无穷
console.log(0 / 0); //NaN
console.log(2 / undefined); //NaN

console.log(5 % 2); //1
console.log(5 % 5); //0
console.log(5 % '2'); //1
console.log(5 % '2a'); //NaN
console.log(5 % true); //0
console.log(5 % false); //NaN
console.log(2 % 5); //2
console.log(3 % 5); //3

console.log(5 - 3); //2
console.log(5 - '2'); //3
console.log(5 - '2a'); //NaN
console.log(5 - true); //4
console.log(5 - false); //5
console.log(5 - null); //5
console.log(5 - undefined); //NaN
(加)
规则:
如果+号两边有字符串,则将两个数据连接成新的字符串。
true(1) false(0) null(0) undefined(NaN)

关系运算符

> (大于) <(小于) >= (大于或等于) <= (小于或等于)

规则:
Number类型之间比较,直接比较
String类型之间比较,从左到右依次比较字符,直到比出结果。
Number与String类型之间比较,先将String转为Number,再比较
true(1) false(0) null(0) undefined(NaN)
console.log(3 > 2); //true
console.log(1 >= '1'); //true
console.log(0 >= 'false') //false
console.log(0 <= false); //true
console.log(0 >= null); //true
console.log('100' > '2') //false
console.log(2 > NaN); //false

== (等于) != (不等于) === (恒等于) !== (不恒等)

区别:
== 和 != : 只比较结果,不比较类型。
=== 和 !== : 先比较类型,如果类型相同,再比较结果。
补充:面试题
console.log(null == 0);//false
console.log(null == false);//false
console.log(null == ‘ ’);/false
//null 和 underfined 都表示空 但是类型不同
console.log(null == underfined);//ture
console.log(null === underfined);//false
console.log(NaN == NaN);//false
console.log(2 == '2'); //true
console.log(2 === '2'); //false
console.log(2 != '2'); //false
console.log(2 !== '2'); //true
//切记:切记:切记:
console.log(null == 0); //false
console.log(null == false); //false
console.log(null == ''); //false
console.log(null == undefined); //true
console.log(null === undefined); //false
console.log(NaN === NaN); //false

逻辑运算符 (false/0/''(空串)/null/undefined/NaN)天然假

  1. ! : 非(但)

规则:
非真即假、非假即真
console.log(!0); //true
console.log(!false);  //true
console.log(!''); //true
console.log(!null); //true
console.log(!undefined); //true
console.log(!NaN); //true
console.log(!' '); //false
console.log(!8); //false
console.log(!-8); //false
console.log(!!8); //true
  1. && : 与(且)

规则
如果&&左边表达式的值为true时,返回右边表达式的
如果&&左边表达式的值为false时,发生短路,返回左边表达式的
var i = 3;
var j = !i >= 0 && (i = 4);
console.log(i,j); //4  4


var k = 3;
var m = k % 5 - 3 && (k = 4);
console.log(k,m);  //3 0

var a = 3;
var b = 3 - 3 * 4 % 2 && (a = 4);
console.log(a,b);  //4   4
  1. || : 或

规则
如果||左边表达式的值为true时,发生短路,返回左边表达式的
如果||左边表达式的值为false时,返回右边表达式的
 var i = 3;
var j = i - i % 4 || (i = 4);
console.log(i,j); //4  4

var k = 3;
var m = 3 - 3 % 2 || ( k = 4);
console.log(k,m); //3   2
练习:
1. number 等于或大于 90,但小于 100
2. ch 不是字符 q 也不是字符 k   
3. number 界于 1 到 9 之间(包括 1 不包括 9),但是不等于 5       
4. number 不在 1 到 9 之间
5. 判断这个字符是空格,是数字,是字母 
6. 有 3 个整数 a,b,c,判断谁最大,列出所有可能
7. 判断 year 表示的某一年是否为闰年,用逻辑表达式表示。
闰年的条件是符合下面二者之一:
1) 能被 4 整除但不能被 100 整除
2) 能被 400 整除

赋值运算符

  1. 简单赋值 =

赋值号左边,只能变量
赋值号右边,可以常量、变量、表达式。
  1. 复合算术赋值 += -= *= /= %=

规则:先取运算符左边变量中的值 与 右边表达式的值 进行相应的 算术运算,最后将运算的结果再赋值给左边的变量。
var i = 3;
i *=9 + i ;和 i= 3 * (9 + 3); 一样
  1. 练习

var i = 5;
var a = 3;
//     6     7   7 8   8  9
a += ++i + ++i - i++ + i++;
var b=a++ + i++ + ++a + a++ + "a++";
求:i、a、b的值分别是多少?
i

特殊运算符

  1. new : 用于创建对象

var i = 3; //Number
var o_num = new Number(3);
console.log(typeof i,typeof o_num); //'number'    'object'
var o_bool = new Boolean();
var o_str = new String();
var obj = new Object();
  1. typeof : 用于检测数据类型

console.log(typeof 3); //'number'
console.log(typeof '3'); //'string'
console.log(typeof true); //'boolean'
console.log(typeof null); //'object'  不是对象的对象。
console.log(typeof undefined); //'undefined'
console.log(typeof NaN); //'number'  不是数字的数字
console.log(typeof typeof false);//'string'

数据类型的转换

  1. 自动类型转换 3 - ’2‘ = 3 - 2

  1. 强制类型转换

  • parseInt('字符串',2~36进制范围) : 将字符串中开头有效的数字部分转为整数。

当省略第二个参数或第二个参数为0时,表示十进制。
当第二个参数是< 2 || > 36时,结果为NaN
如果第二个参数是2~36中的范围时,判断第一个参数是否符合第二个参数的进制范围,如果符合,则正常转为整数,如果不符合(比如a222)进制范围,则直接返回NaN
第二个值是进制
console.log(parseInt('1.2.3'));  //1
console.log(parseInt('3 42')); //3
console.log(parseInt('   3'));  //3
console.log(parseInt(''));  //NaN
console.log(parseInt('a23')); //NaN

console.log(parseInt('2',0)); //2
console.log(parseInt('2',1)); //NaN
console.log(parseInt('2',37)); //NaN
console.log(parseInt('2',1)); //NaN
console.log(parseInt('2',2)); //NaN
console.log(parseInt('2',3)); //2
  • parseFloat('字符串') : 将字符串中开头有效的数字部分转为小数。

console.log(parseFloat('1.2.3.5')); //1.2
console.log(parseFloat('2 34')); //2
console.log(parseFloat('')); //NaN
console.log(parseFloat('a2.3')); //NaN
  • Number('字符串') : 将纯有效数字字符串转为数字。

console.log(Number('1.2.3')); //NaN
console.log(Number('2 34'));  //NaN
console.log(Number('')); //0
console.log(Number('a23')); //NaN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python】type、isinstance、issubclass详解

type type方法有两种重载形式&#xff1a; type(o: object)&#xff1b;type(name: str, bases:Tuple[type, ...], dict:Mapping[str: Any], **kwds) 使用第一种重载形式的时候&#xff0c;传入一个【object】类型&#xff0c;返回一个【type】对象&#xff0c;通常与object…

解决使用element-plus时使用el-select-v2组件时,选中后无法移除focus的状态的方法。

我们可以使用element-ui-plus的el-select-v2的组件&#xff0c;实现复合搜索和下拉框的功能。 使用如下模块&#xff1a; <template><el-select-v2 v-model"value" filterable :options"options" placeholder"Please select"visibleCha…

爸妈记性变差怎么办?

记不住事的时候&#xff0c;我们总会自嘲“老了&#xff0c;脑子不好使了”。记忆力总是和年龄挂钩的&#xff0c;所以很多子女听到父母这样说&#xff0c;也不会放在心上。但有时&#xff0c;记性变差不一定因为年龄&#xff0c;还有可能是患病的前兆。当父母出现频繁忘事的情…

zerotier虚拟网络配置,局域网与外网如同局域网一样访问。

zerotier:可以搭建用于自己的虚拟网络&#xff0c;经过授权连接成功之后彼此都在同一网段&#xff0c;可以像在局域网一样互相访问。 1.创建zerotier账户 2.创建网络&#xff08;Create A Network&#xff09;并记住网络标识&#xff08;NETWORK ID&#xff09; 一、openwrt设…

中华财险进击数字化

本文来源 / 瞭望 中华联合财产保险股份有限公司&#xff08;下称中华财险&#xff09;&#xff0c;是一家 36 年的老牌国有保险公司&#xff0c;全国营业网点超过 2900 个。近年来&#xff0c;中华财险在业务高速发展的同时&#xff0c;从难啃的硬骨头下手&#xff0c;重构核心…

Unity 之 Addressable可寻址系统 -- 可寻址系统面板介绍 -- 入门(二)

可寻址系统面板介绍 -- 入门&#xff08;二&#xff09;一&#xff0c;可寻址系统目录介绍1.2 创建分组1.2 目录介绍二&#xff0c;可寻址系统设置介绍2.1 Profile - 配置文件2.2 Catalog - 目录2.3 Content Update - 内容更新2.4 Downloads - 下载2.5 Build - 构建2.6 Build a…

【数据结构】5.6 树和森林

文章目录5.6.1 树的存储结构&#xff08;不是二叉树&#xff09;双亲表示法孩子表示法结构定义双亲孩子法孩子兄弟法5.6.2 二叉树的转换树与二叉树的转换将树转换成二叉树将二叉树转换成树森林与二叉树的转换森林转换成二叉树二叉树转换成森林5.6.3 树和森林的遍历树的遍历森林…

Nginx简介

一、什么是Nginx?Nginx是一个高性能的HTTP和反向代理Web服务器&#xff0c;同时也提供IMAP/POP3/SMTP服务。Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3/SMTP&#xff09;代理服务器。Nginx的特点是&#xff1a;占有内存少&#xff0c;并发能…

JJWT实现令牌Token

登录实现方式 Session 详情&#xff1a; https://www.cnblogs.com/andy-zhou/p/5360107.html 会话的概念 会话就好比打电话&#xff0c;一次通话可以理解为一次会话。我们登录一个网站&#xff0c;在一个网站上不同的页面浏览&#xff0c;最后退出这个网站&#xff0c;也是…

【Java AWT 图形界面编程】Container 容器 ② ( Frame 窗口示例 | Panel 示例 | 窗口中文乱码处理 )

文章目录一、Frame 窗口示例二、Panel 示例三、窗口中文乱码处理一、Frame 窗口示例 首先 , 创建 Frame 实例对象 , 该对象就是 操作系统中应用软件的 窗口 ; // 1. 创建窗口 Frame frame new Frame("AWT 图形界面编程");Frame 是 Window 的子类 , public class F…

前端号外—2022年最受欢迎居然是它,Node.js危已

导读 | 2022年是艰难的一年&#xff0c;不仅有互联网的寒冬、还有新冠疫情的洗礼。但是似乎这一切都阻挡不了JavaScript的内卷&#xff0c;一年不长不短的时间中&#xff0c;JavaScript从创新、性能、功能等多维度深度进化&#xff0c;给前端带来了诸多惊喜。本文基于github上流…

仓库管理系统demo搭建指南

1、简介 1.1、案例简介 本文将介绍&#xff0c;如何搭建云进销存-仓库管理。 1.2、应用场景 云进销存-仓库管理应用分仓管理并提供灵活的库存计算方式及库存预警。 2、设置方法 2.1、表单搭建 1&#xff09;新建表单【商品管理】&#xff0c;字段设置如下&#xff1a; …

TensorFlow笔记之神经网络完成多分类任务

文章目录前言一、数据集调用二、Tensorflow1.x1.单隐藏层2.模型保存与调用三、Tensorflow2.x1.全连接层类2.keras建模总结前言 对TensorFlow笔记之单神经元完成多分类任务进行修改&#xff0c;在tf1.x与tf2.x中使用神经网络完成手写体数字识别多分类任务。 一、数据集调用 数…

10、Javaweb_Cookkie会话Session修改IDEA代码模板

修改IDEA代码模板 选择Setting... 找到要修改的代码模板&#xff0c;点击ok修改即可 使用模板创建方法 ,点击文件包,右键New选择文件类型 点击ok即可 创建完成 会话技术 1. 会话&#xff1a;一次会话中包含多次请求和响应。 * 一次会话&#xff1a;浏览器第一次给服务器资…

JAVA开发(web常见安全漏洞以及修复建议)

web安全常见漏洞修复建议&#xff1a;SQL注入规避 代码层最佳防御sql漏洞方案&#xff1a;使用预编译sql语句查询和绑定变量。&#xff08;1&#xff09;使用预编译语句&#xff0c;使用PDO需要注意不要将变量直接拼接到PDO语句中。所有的查询语句都使用数据库提供的参数化查询…

92、【树与二叉树】leetcode ——222. 完全二叉树的节点个数:普通二叉树求法+完全二叉树性质求法(C++版本)

题目描述 原题链接&#xff1a;222. 完全二叉树的节点个数 解题思路 1、普通二叉树节点个数求法 &#xff08;1&#xff09;迭代&#xff1a;层序遍历BFS 遍历一层获取一层结点 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode …

华为交换机、路由器设备批量配置端口方法步骤

华为交换机、路由器批量配置端口方法步骤 在现实工作中&#xff0c;如果要对多个端口做同样的配置&#xff0c;每个接口逐一进行相同的配置&#xff0c;很容易出错&#xff0c;而且造成大量重复工作。 配置端口组功能就可以解决这个问题啦。 你只需要将这些以太网接口加入同一…

HTML学习笔记(全)

HTML 文章目录HTML第一章——HTML 基础认识1. 1 基础补充1.1.1 网页组成1.1.2 代码如何转换成网页1.1.3 渲染引擎&#xff08;了解&#xff09;1.1.4 web 标准1.2 HTML 基础认知1. HTML的概念2. HTML页面固定结构3. **标签说明&#xff1a;**第二章——HTML基础语法2.1——注释…

国产linux操作系统——麒麟操作系统的来龙去脉

文章目录1、linux操作系统2、国产操作系统3、麒麟操作系统4、引用1、linux操作系统 目前市场主流的linux操作系统分类大致如此&#xff0c;国产操作系统的麒麟操作系统&#xff0c;底层比较杂&#xff0c;所以单独一类。 2、国产操作系统 排名日期截止到2022 这里提一下排名第…

科技云报道:从re:Invent 2022读懂亚马逊云科技的“生态棋局”

科技云报道原创。 懂棋的人都知道&#xff0c;下棋靠的是智力的角逐&#xff0c;也是气度的较量。 到了云计算发展的新时期&#xff0c;下棋的“人”已经变了&#xff0c;单靠一个人的智力解决不了N个用户的N种问题。 因此&#xff0c;近年来头部云厂商纷纷加大了对合作伙伴生…