文章目录
- Javascript 相等运算符和 Object.is() 方法
- 相等运算符(==)
- 全等运算符(===)
- Object.is() 方法
Javascript 相等运算符和 Object.is() 方法
相等运算符(==)
相等运算符(==)会先进行类型转换,将两个操作数转换为相同的类型,然后再比较两个值。
console.log("10" == 10); // true
console.log(1 == true); // true
console.log(+0 == -0); // true
console.log(NaN == NaN); // false
全等运算符(===)
全等运算符(===)不会进行类型转换,只有当两个值的类型和值都相同时才会返回 true。
console.log("10" === 10); // false
console.log(1 === true); // false
console.log(+0 === -0); // true
console.log(NaN === NaN); // false
Object.is() 方法
Object.is() 是 ES6 新增的方法,用于比较两个值是否严格相等(即在所有情况下都返回相同的布尔值),与 === 类似,但在某些特殊情况下行为不同。
console.log(Object.is("10", 10)); // false
console.log(Object.is(1, true)); // false
console.log(Object.is(+0, -0)); // false
console.log(Object.is(NaN, NaN)); // true
总的来说,建议在比较值的相等性时优先使用全等运算符(===),因为它更加严格和可靠。而 Object.is() 则可以用于特殊情况下的比较,如判断 NaN 或 +0/-0。相等运算符(==)则应尽量避免使用,因为其类型转换规则容易引起混淆和错误。