-
Notifications
You must be signed in to change notification settings - Fork 0
/
js1
65 lines (61 loc) · 2.52 KB
/
js1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
js语法,语句,表达式。
1,ES5中的运行模式,严格模式和非严格模式(松散模式)。
2,严格模式的目的
-消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。
- 消除代码运行的一些不安全之处,保证代码运行的安全。
- 提高编译器效率,增加运行速度。
3,启用方法:"use strict"。
4,严格模式下this指针为underfined,非严格模式下为全局变量。
5,判断当前模式是否为严格模式,
"use strict"
function is(){
return this === underfined?true:false;
}
is();
false
6,严格模式下禁止删除不可改属性和未定义的变量。
var str = "abc";
var strDescriptor = Object.getOwnPropertyDescriptor(window,"str");
console.log(strDescriptor);
7,严格模式下禁止函数参数重名
"use strict";
function f(a, a, b) {
return a+b;
}
f(2,3,4);//严格模式下报错
*/
8,算术运算符与类型转换
1+{}; //"1[object Object]"
true+true; //2
"5"-2; //3
9,关系运算符
== 与 ===
== (如果类型不同,先转换再比较,注:引用类型到基本类型的转换方向)
=== (若类型不同则false,若类型相同则判断同 ==)
NaN===NaN false,{}==={} false。
10, != 与 !==
!=(如果类型不同,先转换再比较)
!==(先判断类型,若类型不同则返回true,若类型相同则判断同!=)
11,逻辑运算符
对于&&(与操作)来说, 除了两侧都为真时为真,其他情况都为假
- 对于 | |(非操作) 来说,除了两侧都为假时为假,其他情况都为真
12,当逻辑运算符&&和||两侧的操作数不是布尔类型时
- 首先将左操作数转换成布尔类型
- 对转换后的左操作数进行逻辑判断(true or false)
- 根据短路原则返回原始左操作数或原始右操作数
13,短路原则(忽略对右操作数的判断)
- 对于&&,转换后的左操作数若为true,则直接返回原始右操作数,若为false则
直接返回原始左操作数。
- 对于||,转换后的左操作数若为true,则直接返回原始左操作数,若为false则直
接返回原始右操作数。
14,使用||来设置函数参数的默认值
- 函数定义时可以给参数指定默认值,调用时若未传参数则该参数的值取它定义时的默认值
- JS(ES6之前)不能直接为函数的参数指定默认值,可以通过 | | 来实现.
var sum = function(a,b,c){
b = b||4;
c = c||5;
return a+b+c;
};
console.log(sum(1,2,3));
console.log(sum(1,2));
console.log(sum(1));