在 JavaScript 中,处理数字时,在一些情况下可能需要进行近似值比较或者检测 NaN。ECMAScript 2019 引入了新的方法 Number.isFinite
、Number.isNaN
和 Object.is
来进行这些操作。
Number.isFinite
Number.isFinite
方法用来判断一个数字是否有限,即不是无穷大(Infinity)和不是非数字(NaN)。
它的使用方式和传统的 isFinite
函数类似,但是它可以准确地检测一个数字是否为有限。传统的 isFinite
函数会把非数字的值转换成数字类型,而 Number.isFinite
只会接受数字类型的值。这种行为保证了函数只返回 true 对于有限的数字,即便这个数字是负数或者带有分数部分。
以下是使用 Number.isFinite
的示例代码:
console.log(Number.isFinite(10)); // true console.log(Number.isFinite(-10)); // true console.log(Number.isFinite(0.5)); // true console.log(Number.isFinite(Infinity)); // false console.log(Number.isFinite(-Infinity)); // false console.log(Number.isFinite(NaN)); // false console.log(Number.isFinite('10')); // false
Number.isNaN
Number.isNaN
方法用来判断一个值是否是非数字(NaN)。它的使用方式和传统的 isNaN
函数类似,但是它只接受数字类型的值。
以下是使用 Number.isNaN
的示例代码:
console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN('Hello')); // false console.log(Number.isNaN(10)); // false
Object.is
Object.is
方法用来判断两个值是否严格相等。它和 ===
操作符的行为基本一致,但有一些特殊情况。在比较的时候,Object.is
方法对待 +0 和 -0 是不同的;同时它认为 NaN 不与任何值相等(包括自身)。
以下是使用 Object.is
的示例代码:
console.log(Object.is(0, 0)); // true console.log(Object.is(+0, -0)); // false console.log(Object.is(NaN, NaN)); // false console.log(Object.is({}, {})); // false
总结
在 JavaScript 中,处理数字的过程中可能需要进行近似值比较或者检测 NaN。ECMAScript 2019 引入了三个新的方法 Number.isFinite
、Number.isNaN
和 Object.is
来满足这些需求。其中,Number.isFinite
和 Number.isNaN
都是基于传统的函数的强化版,而 Object.is
则是专门用来比较两个值是否严格相等的方法。通过学习和掌握这些方法,可以更加方便地进行数字的处理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651b9bda95b1f8cacd34011d