360 字
2 分钟
==与===区别

1. 相等操作符(==和===)#

1.1 使用==时,不同类型的值也可以被看作相等#


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

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); //false
console.log('packt' === 'packt'); //true
var person1 = {name:'John'};
var person2 = {name:'John'};
console.log(person1 === person2); //false,不同的对象
==与===区别
https://nollieleo.github.io/posts/与区别/
作者
翁先森
发布于
2020-03-16
许可协议
CC BY-NC-SA 4.0