资讯专栏INFORMATION COLUMN

ES 6 新特性 Number.isNaN 介绍

EsgynChina / 358人阅读

摘要:中有一个特殊的对象,它表示一个非法的数字。这个对象十分特殊,它的类型是,属于原始值,但是和自身不相等。和自身不相等,乍一看违反直觉,但却符合的规定。的委员会成员曾经解释过将设计为不等的权衡。的这个新特性,已经被和部分浏览器所支持。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78038.html

相关文章

  • ES6 旧瓶

    摘要:本文是系列的第二篇,前一篇走马观花概要介绍了,这一篇标题之所以叫旧瓶新酒,是想介绍那些原来就被广泛使用的对象,例如,对这些对象扩展了一些很有用的新方法。用于监听取消监听数组的变化,指定回调函数。在中已被建议撤销。 本文是 ES6 系列的第二篇,前一篇《ES6 走马观花》概要介绍了ES6,这一篇标题之所以叫旧瓶新酒,是想介绍那些原来就被广泛使用的JS对象,例如String、Array,E...

    未东兴 评论0 收藏0
  • ECMAScript6 特性——“数值的扩展”

    摘要:二进制和八进制表示法提供了二进制和八进制数值的新的写法,分别用前缀或和或表示。用来检查是否为有穷以及是否为这两个新方法只对数值有效,非数值一律返回。引入了和这两个常量,用来表示这个范围的上下限。因为有精度限制,超过的次方的值无法精确表示。 1 二进制和八进制表示法 ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 console.log(0b10...

    Dean 评论0 收藏0
  • JavaScript值介绍

    摘要:的数字类型是基于标准实现的,该标准也被称为浮点数使用的是双精度即位进制由于数字值可以使用对象进行封装,因此数字值可以调用中的方法。 数组 和其他语言不同,在JavaScript中,数组可以拥有不同值类型,可以使字符串,数字,对象,还可以是数组(多维数组就是这样形成的). 声明数组后,可以直接通过索引的方式进行赋值: var arr = []; arr.length; //0 ...

    hsluoyz 评论0 收藏0
  • ES6(2)-各种类型的扩展(字符串、正则、数值、函数)

    摘要:返回布尔值,表示参数字符串是否在原字符串的头部。模板字符串之中还能调用函数。其他对字符串还有许多扩展,例如对字符表示的扩充以及为字符串提供了遍历方法详情请点击正则的扩展构造函数在中,构造函数的参数有两种情况。 ES6对各种基本类型都做了扩展,内容有些多,本章节挑选比较重要的扩展说明。 1 字符串的扩展 1.1 includes(), startsWith(), endsWith() 传...

    godruoyi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<