JavaScript'=='与‘===’的区别

相等运算符==

如果操作数据有相同类型,判断值是否相等,如果相等返回true,否则返回false。

如果操作数不同,按照这样的情况判断。

1、null和undefined相等;

2、其中一个是数字另一个是字符串,将字符串转换为数字再作比较;

number('123')=123;

3、其中一个是true,先转换成1(false转换为0)在做比较;

print(1==true),返回true

类型不等,true会先转换成数值 1,比较 1 == 1, 相等。

4、如果一个是对象,另一个是数字或字符串,则将对象转换为原始值;

valueof()或tostring()

5、其他情况返回false。

等同运算符===

如果操作数的类型不同,则不进行值的判断,直接返回false。

如果操作数据有相同类型,分下列情况来判断:

1、都是数字的情况下,如果值相同,则两者相同。

2、都是字符串的情况下,如果串值不同则不相等。

3、都是布尔值,均为true或false,则相等。

4、如果两个操作数引用同一个对象,则两者完全相同,否则不相等。

5、如果两个操作数均为null或undefined,则相同,否则不等同。

print(1===true)返回false

print(null===undefined)返回false

总结:==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。

 

猜你喜欢

转载自1150404757.iteye.com/blog/2299872