技术与生活 / 一篇记录
两个看起来一样的值,为什么不相等?
类型转换可能让条件判断产生意外结果,严格相等更便于推理。
严格相等避免一部分隐式转换,但对象比较的是身份。两次创建的对象即使字段相同,也不会因为外观一致就成为同一个引用。
操作与观察
以下示例可在现代浏览器的开发者工具中观察;涉及 DOM 的代码需要在网页环境运行。
console.log(0 === '0', null === undefined);
分别比较数字、字符串和空值。
用原始值、同一对象的两个引用和两个独立对象分别实验。需要比较结构内容时,应根据数据模型选择比较规则,而不是统一转成字符串。
数值比较还需要注意 NaN 的特殊行为。对于可能由用户输入转换而来的数据,先明确转换与有效性检查,再进入业务判断,避免把无效数字当成普通值继续计算。
别遗漏这条边界
严格相等不会让两个内容相同的独立对象自动相等。
参考:JavaScript 文档。