ECMAScript 6 新增值比较函数 Object.is

作者:函数茶馆

时间:2026-10-29

浏览:498

本文介绍 ECMAScript 6 新增的 Object.is 方法,用于更精确的值比较。虽然多数情况下 Object.is 等价于 ===,但在处理 NaN、+0 和 -0 时存在关键差异。文章通过代码示例展示了 Object.is 如何解决 === 在特殊值比较上的局限,帮助开发者选择正确的比较方式。

文章目录

传统值比较方法的局限性

在此之前,我们通常使用双等号“==”或三等号“===”来比较值。其中,三等号“===”的执行标准更为严格,一旦比较双方的数据类型不同,会立即返回 false。

此外,存在一个唯一的例外值,即 NaN,它不与任何值相等,包括它自己。

传统值比较方法的局限性

ECMAScript 6 中 Object.is 的引入

随着 ECMAScript 6 的引入,Object.is 方法被加入,这使得值比较的逻辑变得更加复杂。在大多数常规情况下,Object.is 的行为与“===”是等价的,具体表现如下。


1 === 1 // true
Object.is(1, 1) // true
 
'a' === 'a' // true
Object.is('a', 'a') // true
 
true === true // true
Object.is(true, true) // true
 
null === null // true
Object.is(null, null) // true
 
undefined === undefined // true
Object.is(undefined, undefined) // true

Object.is 与 === 的关键差异

然而,当涉及 NaN、0、+0 和 -0 这些特殊数值时,Object.is 的表现与“===”存在显著差异。


NaN === NaN // false
Object.is(NaN, NaN) // true
 
0 === -0 // true
Object.is(0, -0) // false
 
-0 === +0 // true
Object.is(-0, +0) // false

以上所述就是本文的全部内容了,希望大家能够喜欢。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章