360 字
2 分钟
==与===区别
1. 相等操作符(==和===)
1.1 使用==时,不同类型的值也可以被看作相等

如果x和y是相同类型,JavaScript会比较它们的值或对象值。其他没有列在这个表格中的情况都会返回false
toNumber和toPrimitive方法是内部的
toNumber方法对不同类型返回的结果如下:

toPrimitive方法对不同类型返回的结果如下:

验证:


显而易见结果并不相同,为啥?
- 首先,布尔值会被
toNumber方法转成数字,因此得到wengkaimin == 1。 - 其次,用
toNumber转换字符串值。因为字符串包含有字母,所以会被转成NaN,表达式 就变成了NaN == 1,结果就是false。
这行代码也是同样原理

- 首先,布尔值会被
toNumber方法转成数字,因此得到wengkaimin == 0。 - 其次,用
toNumber转换字符串值。因为字符串包含有字母,所以会被转成NaN,表达式 就变成了NaN == 0,结果就是false
一样的,只是将字符串转数字了,‘1’转1(number)类型

1.2 === 操作符
如果比较的两个值类型不同,比较的结果就是false。如果 比较的两个值类型相同,结果会根据下表判断

如果x和y类型不同,结果就是false。
**例子: **
console.log('packt' === true); //falseconsole.log('packt' === 'packt'); //truevar person1 = {name:'John'};var person2 = {name:'John'};console.log(person1 === person2); //false,不同的对象