JavaScript中==与===的区别
===
叫做严格运算符 ,==
叫做相等运算符.
严格运算符===
规则:
-
基本类型
- 第一步:比较类型.判断前后顺序的的类型值,如果俩个值的类型不同,则该表达式的直接返回False.
- 第二步:比较值.类型值相同(
Number
,String
,Boolean
)时,判断值相同时返回True,否则返回False. - undefined和null与自身严格相等.
-
复杂类型
复杂类型(
对象
,数组
,函数
)进行严格模式比较时,比较它们的指针是否指向同一个对象,而不是比较它们的值是否相同.
相等运算符==
规则:
- 基本类型,转换类型
String
,Boolean
都先转化为Number
类型,然后判断值相同时返回True,否则返回False. - 复杂类型(
对象
,数组
,函数
),先转化为基本类型,然后再进行比较. - undefined和null之间相等.而且不等于任何基本类型.
- null == undefined