脚本引入
● 我们可以使用一个<script> 标签将 JavaScript 代码添加到页面中。
● type 和 language 属性不是必需的。
● 外部的脚本可以通过 <script src="path/to/script.js"></script> 这种方式插入。
命名
- 匈牙利命名法 (变量名 = 类型+对象描述)
- 驼峰命名法
声明
● 显示声明 (var 变量名=xxx)
● 陋习 (没有类型;重复声明;隐式声明;不声明直接赋值)
● 正解 (先声明,后读写; 先赋值,后运算)
变量类型
● 值类型
a. 占用空间固定,保存在栈中
b. 保存与复制的是值本身
c. 使用typeof检测数据的类型
d. 基本类型数据是值类型
● 引用类型
a. 占用空间不固定,保存在堆中
b. 保存与复制的是指向对象的一个指针
c. 使用instanceof检测数据的类型
d. 使用new()方法构造出的对象是引用型
作用域
● 全局变量
a. 包含 (在函数体外定义的变量; 在函数内部定义的无var的变量)
b. 调用 (任何位置)
● 局部变量
a. 包含 (在函数内部使用var声明的变量;函数的参数变量)
b. 调用 (当前函数体内部)
● 优先级
a. 局部变量高于同名全局变量;
b. 参数变量高于同名全局变量;
c. 局部变量高于同名参数变量;
● 特性
a. 忽略块级作用域
b. 全局变量是全局对象的属性
c. 局部变量是调用对象的属性
d. 作用域链 (内层函数可访问外层函数局部变量; 外层函数不能访问内层函数局部变量)
e. 生命周期
■ 全局变量 (除非被显示删除,否则一直存在)
■ 局部变量 (自声明起至函数运行完毕或被显示删除)
■ 回收机制 (标记清除;引用计数)
数据类型
undefined , null, boolean, string, number,object
运算符
(1)数学运算符
- 运算符
+、-、*、/、% - 复合赋值运算符
+= ;-=;*=;/=;%=
自增自减
● 功能相反
a. ++ 对唯一的运算数进行递增操作(每次加1)
b. -- 对唯一个运算数进行递减操作 (每次减1)
● 规则相同
a. 运算数必须是一个变量,数组的一个元素或者对象的属性
b. 如果运算数是非数值的则运算符会将它转成数值
● 符号位置决定预算结果
a. 运算数之前 (先进行递增或递减操作,再进行求值)
b. 运算数之后 (先求值,再进行递增(递减)操作)
关系运算符
- 大小关系检测
a. 运算符
■ < 如果A小于B,则返回值为true,否则返回值为false
■ <= 如果A小于等于B, 则返回值为true,否则返回值为false
■ " >= " 如果A大于等于B,则返回值为true,否则返回值为false
■ " > " 如果A大于B,则返回值为true,否则返回值为false
b. 操作规则
■ 数值与数值的比较 (比较它们的代数值)
■ 仅一个运算数是数值 (将另一个运算数转换成数值,再比较)
■ 字符串间的比较 (逐字符比较它们的Unicode数值)
■ 字符串与非数值的比较 (将运算数转换成字符串并进行比较)
■ 运算数即非数字也非字符串 (转换为数值或字符串后进行比较)
■ 运算数无法被转换成数值或字符串 (直接返回false)
■ 与NaN的比较 (永远返回false)
等值关系检测
a. 相等比较
■ 操作符 (== 比较两个运算数的返回值是否相等;!= 比较两个运算数的返回值看是否不相等)
■ 类型转换
● 布尔值 (true :1 ; false:0;)
● 对象 (调用valueOf() 转换为基本类型)
● 字符串与数值的比较 (字符串转换为数值)
■ 比较原则
● null与undefined (相等; 比肩前不进行任何转换)
● NaN (与任何数值都不相等包括自身)
● 对象 (是否属于同一对象;是 == ; 否 !=;)
b. 相同比较
■ 运算符 (=== 比较两个运算数的返回值以及数据类型看是否相同;! 比较两个运算数的返回值以及数据类型看是否不同)
■ 比较原则
● 值类型间比较 (只有数据类型相同,且数值相等时才能够相等)
● 值类型与引用类型比较 (肯定不相同)
● 引用类型间比较 (比较的是它们的引用值(内存地址))
对象运算符
● in 判断左侧运算数是否为右侧运算数的成员
● instanceof 判断对象实例是否属于某个类或构造函数
● new 根据构造函数创建一个新的对象,并初始化该对象
● delete 删除指定对象的属性,数组元素或变量
● " . " 或者 " [] " 存取对象数组元素
● () 函数调用,改变运算运算符优先级
逻辑运算符
● !逻辑非
a. 返回值
ⅰ. true (空字符串; 0 ;null;NaN;undefined;)
ⅱ. false (对象;非空字符串;非0数值(Infinity))
b. 特性 (如果运算数的值为false则返回true,否则返回false; 连续使用两次!,可将任意类型转换为boolean类型)
● && 逻辑与
○ 规则
ⅰ. 第一个操作数是对象,则返回第二个操作数
2. 第二个操作数是对象,第一个操作数只为true,则返回该对象
3. 两个操作数都是对象,则返回第二个操作数
4. 第一个操作数是null,则返回null
5. 第一个操作数是NaN,则返回NaN
6. 第一个操作数是undefined,则返回undefined
特性 (当且仅当两个运算数的值都是true时,才返回true,否则返回false,短路操作,当一个操作数的值是false,则不再对第二个操作数进行求值)
● || 逻辑或
○ 规则
ⅰ. 第一个操作数是对象,则返回第一个操作数
2. 第一个操作数值为false,则返回第二个操作数
3. 两个操作数都是对象,则返回第一个操作数
4. 两个操作数都是null,则返回null
5. 两个操作数都是NaN,则返回NaN
6. 两个操作数都是undefined ,则返回undefined
特性 (当且仅当两个运算数的值都是false时,才返回false,否则返回true,如果第一个操作数值为true,则不会对第二个操作数进行求值)
网友评论