Object.is():解决 === 的两个怪异行为(NaN 和 +/-0)详解 大家好,我是你们的编程专家。今天我们要深入探讨一个在 JavaScript 中看似微不足道、实则非常重要的知识点:Object.is() 方法。 你可能已经熟悉了 ===(严格相等运算符),它是日常开发中最常用的比较方式之一。但你知道吗?这个看似“可靠”的运算符其实有两个隐藏的“陷阱”——它对 NaN 和 +0 与 -0 的处理并不符合直觉。而 Object.is() 正是为了修复这些问题而诞生的。 本文将从实际问题出发,逐步剖析这两个怪异行为的本质,并通过大量代码示例展示它们带来的困扰以及如何用 Object.is() 来优雅解决。最后还会对比两者的性能差异和适用场景,帮助你在项目中做出更明智的选择。 一、=== 的两个怪异行为:为什么我们需要 Object.is() 1. NaN 不等于自己? 这是最著名的怪异点之一: console.log(NaN === NaN); // false 是的,你没看错!在 JavaScript 中,NaN(Not-a-Number)是一个特殊的数值类型,表示“不是一 …