ES 6 新特征 Number.isNaN 引见

NaN

JavaScript中有一个特别的对象:NaN,它示意一个不法的数字(Not-a-Number)。这个对象非常特别,它的范例是number,属于原始值,然则和本身不相等。即NaN === NaN返回false

NaN和本身不相等,乍一看违背直觉,但却相符IEEE754的划定。IEEE754的委员会成员曾诠释过将NaN设想为不等的衡量

isNaN

由于NaN的特别性,我们常常须要推断一个值是不是为NaN,一般我们运用isNaN来推断,比方:

isNaN(NaN);       // true
isNaN(undefined); // true
isNaN({});        // true

isNaN(true);      // false
isNaN(null);      // false
isNaN(1);         // false

如果说NaN是JavaScript的一个坑的话,isNaN就是另一个坑了。由于isNaN会先将通报给它的对象转化为数字范例。而我们晓得,关于一般的字符串,转化为数字范例会返回NaN。于是就踩坑了。。。

isNaN("1");            // fales "1" 被转化为数字 1,因而返回false
isNaN("SegmentFault"); // true "SegmentFault" 被转化成数字 NaN

所以说,一般对字符串运用isNaN方法会返回trueisNaN坑爹了——固然,isNaN或许会反驳说这不是它的坑,这是JavaScript强迫范例转换的坑。

那末,可不可以不做范例转换直接推断呢?ES6用Number.isNaN填上了这个坑。Number.isNaN不会转换对象的范例。

Number.isNaN('SegmentFault');  // false

ES6的这个新特征,已被NodeJS和部份浏览器所支撑。

编撰 SegmentFault

    原文作者:weakish
    原文地址: https://segmentfault.com/a/1190000000456596
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞