摘要:中有一个特殊的对象,它表示一个非法的数字。这个对象十分特殊,它的类型是,属于原始值,但是和自身不相等。和自身不相等,乍一看违反直觉,但却符合的规定。的委员会成员曾经解释过将设计为不等的权衡。的这个新特性,已经被和部分浏览器所支持。
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方法会返回true,isNaN坑爹了——当然,isNaN也许会辩驳说这不是它的坑,这是JavaScript强制类型转换的坑。
那么,可不可以不做类型转换直接判断呢?ES6用Number.isNaN填上了这个坑。Number.isNaN不会转换对象的类型。
Number.isNaN("SegmentFault"); // false
ES6的这个新特性,已经被NodeJS和部分浏览器所支持。
编撰 SegmentFault
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/78038.html
摘要:二进制和八进制表示法提供了二进制和八进制数值的新的写法,分别用前缀或和或表示。用来检查是否为有穷以及是否为这两个新方法只对数值有效,非数值一律返回。引入了和这两个常量,用来表示这个范围的上下限。因为有精度限制,超过的次方的值无法精确表示。 1 二进制和八进制表示法 ES6提供了二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:的数字类型是基于标准实现的,该标准也被称为浮点数使用的是双精度即位进制由于数字值可以使用对象进行封装,因此数字值可以调用中的方法。 数组 和其他语言不同,在JavaScript中,数组可以拥有不同值类型,可以使字符串,数字,对象,还可以是数组(多维数组就是这样形成的). 声明数组后,可以直接通过索引的方式进行赋值: var arr = []; arr.length; //0 ...
摘要:返回布尔值,表示参数字符串是否在原字符串的头部。模板字符串之中还能调用函数。其他对字符串还有许多扩展,例如对字符表示的扩充以及为字符串提供了遍历方法详情请点击正则的扩展构造函数在中,构造函数的参数有两种情况。 ES6对各种基本类型都做了扩展,内容有些多,本章节挑选比较重要的扩展说明。 1 字符串的扩展 1.1 includes(), startsWith(), endsWith() 传...
阅读 3333·2021-11-11 16:54
阅读 3471·2021-10-11 10:58
阅读 1222·2021-08-30 09:41
阅读 1780·2019-08-30 15:54
阅读 1971·2019-08-30 14:00
阅读 2673·2019-08-29 17:13
阅读 1604·2019-08-29 15:19
阅读 552·2019-08-29 15:14