1.==
(相等运算符)
当使用==
比较两个值时,如果它们的类型不同,JavaScript会尝试将它们转换为一个共同的类型,然后再进行比较。这个过程称为类型转换或类型强制。
0 == '0' // true,因为字符串'0'会转换为数字0
1 == true // true,因为布尔值true会转换为数字1
null == undefined // true,因为这两个值代表空或不存在的值
2.===
(全等运算符)
===
不会进行类型转换,如果两个值的类型不同,它们就被认为是不相等的。
0 === '0' // false,类型不同(一个是数字,一个是字符串)
1 === true // false,类型不同(一个是数字,一个是布尔值)
null === undefined // false,类型不同(虽然它们都代表空或不存在的值)
3.object.is()
这个方法用来判断两个值是否相同。它与===
类似,但是在比较NaN
和-0
时,object.is()
的行为不同。
NaN === NaN // false,因为NaN不等于任何值,包括它自己
Object.is(NaN, NaN) // true,因为Object.is()认为NaN等于它自己
-0 === 0 // true,因为-0和0被认为是相等的
Object.is(-0, 0) // false,因为Object.is()认为-0和0是不同的
简单来说,object.is()
和===
在大多数情况下表现相同,但处理NaN
和-0
时不同。