JavaScript
== 和 === 的区别
- "==="严格运算符,"=="相等运算符
- 建议尽量不要使用相等运算符
- 严格运算符:
1.不同类型 ->false
2.同一类的原始类型值(数值、字符串、布尔型)
值相同时->true
3.同一类的复合类型值(对象、数组、函数)
指向同一对象->true
4.undefine 和 null
null === null //true
undefine === undefine //true
null === undefine //false
- 原始类型
原始类型的数据会转换成数值类型再进行比较。字符串和布尔值都会转换成数值。
- 对象与原始类型值比较
对象(这里指广义的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。
new String("123")==="123"//false
new String("123")=="123"//true
new String("123")==123//true
- undefined和null
undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true。
- 相等运算符的缺点
相等运算符隐藏的类型转换,会带来一些违反直觉的结果。