← 全部文章

技术与生活 / 一篇记录

两个看起来一样的值,为什么不相等?

类型转换可能让条件判断产生意外结果,严格相等更便于推理。

严格相等避免一部分隐式转换,但对象比较的是身份。两次创建的对象即使字段相同,也不会因为外观一致就成为同一个引用。

操作与观察

以下示例可在现代浏览器的开发者工具中观察;涉及 DOM 的代码需要在网页环境运行。

console.log(0 === '0', null === undefined);

分别比较数字、字符串和空值。

用原始值、同一对象的两个引用和两个独立对象分别实验。需要比较结构内容时,应根据数据模型选择比较规则,而不是统一转成字符串。

数值比较还需要注意 NaN 的特殊行为。对于可能由用户输入转换而来的数据,先明确转换与有效性检查,再进入业务判断,避免把无效数字当成普通值继续计算。

别遗漏这条边界

严格相等不会让两个内容相同的独立对象自动相等。

参考:JavaScript 文档。

搜索文章

输入关键词,找回一篇记录。