if (v == undefined) {
console.log("==")
}
if (v === undefined) {
console.log("===")
}
上面两个 if 判断有什么区别?
if (v == undefined) {
console.log("==")
}
if (v === undefined) {
console.log("===")
}
上面两个 if 判断有什么区别?
null
和undefined
在进行逻辑比较时不会发生类型转换,但是null == undefined
为true
。所以通常使用if (v == undefined)
判断v
是否取值为null
或者undefined
:
console.log(null == void 0) // true
console.log(null === void 0) // false
完整可参考JS-相等性判断
===
会比较类型,类型相同再比较值;==
不关注类型,只要值通过隐式转换之后相等即判等
所以 null == undefined
结果为 true,但 null === undefined
结果为 false。null
和 undefeind
都表示空或不存在的意思,但是 null
是 object
类型,undefined
是专门的 undefined
类型。
由于隐式转换常常会因为开发者不够谨慎造成一些预料之外的错误,所以现代规范一般会禁止使用 ==
。当然规范是团队制定的,不同团队有不同的规范,也没有定数。反正我建议不使用 ==
和 !=
。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
==
为相等比较,会有隐式转换(将被比较的值转换为相同类型);===
为严格相等比较,两个被比较的值必须类型一致;相关文档
相等(==) - JavaScript | MDN
严格相等(===) - JavaScript | MDN
JavaScript 中的相等性判断 - JavaScript | MDN