跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

JavaScript比较运算符全等与相等在类型转换下表现

全等(===)不进行类型转换,相等(==)会隐式转换类型后再比较;===要求类型和值均相同,==则按规则转换后比较,如0==false为true而0===false为false。 全等( === )不进行类型转换,相等( == )会尝试隐式转换类型后再比较,这是两者最核心的区别。 相等(==)会触发隐式类型转换 当操作数类型不同时, == 会按特定规则转换一方或双方的值,再比较。例如:
0 == false
true
false
转为
0
"0" == 0
true
(字符串
"0"
转为数字
0
"" == false
true
(空字符串转为
0
false
也转为
0
null == undefined
true
(这是特例,其他值都不与它们相等) 全等(===)要求类型和值都一致 === 跳过所有类型转换,直接判断:类型不同,结果必为
false
0 === false
false
number
boolean
"0" === 0
false
string
number
[1] === [1]
false
(对象比较的是引用,不是内容)
NaN === NaN
false
(唯一一个自身不等于自身的值) 常见易错场景 这些情况在用 == 时容易出人意料: 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更 下载 立即学习 “ Java免费学习笔记(深入) ”;
document.all == null
返回
true
(历史遗留行为,
document.all
被当作假值处理)
{} == {}
[] == []
都是
false
(对象/数组用 == 仍比引用,且每次字面量都是新对象)
"0" == false
true
,但
"0" == true
false
true
转为
1
"0"
转为
0
) 建议与实践 除非明确需要松散比较(如兼容旧逻辑),否则一律使用 === 。 用
Number()
Boolean()
String()
显式转换,再用 === 比较,逻辑更清晰 判断是否为
null
undefined
,可用
value == null
(简洁且安全),但更推荐
value === null || value === undefined
ESLint 等工具默认禁用 == ,启用
eqeqeq
规则可自动提示 理解转换规则有助于 debug,但日常编码中绕过它,用显式转换加全等,更可靠也更易维护。

相关文章