摘要:中有一個(gè)特殊的對(duì)象,它表示一個(gè)非法的數(shù)字。這個(gè)對(duì)象十分特殊,它的類型是,屬于原始值,但是和自身不相等。和自身不相等,乍一看違反直覺,但卻符合的規(guī)定。的委員會(huì)成員曾經(jīng)解釋過將設(shè)計(jì)為不等的權(quán)衡。的這個(gè)新特性,已經(jīng)被和部分瀏覽器所支持。
NaN
JavaScript中有一個(gè)特殊的對(duì)象:NaN,它表示一個(gè)非法的數(shù)字(Not-a-Number)。這個(gè)對(duì)象十分特殊,它的類型是number,屬于原始值,但是和自身不相等。即NaN === NaN返回false。
NaN和自身不相等,乍一看違反直覺,但卻符合IEEE754的規(guī)定。IEEE754的委員會(huì)成員曾經(jīng)解釋過將NaN設(shè)計(jì)為不等的權(quán)衡。
isNaN由于NaN的特殊性,我們經(jīng)常需要判斷一個(gè)值是否為NaN,通常我們使用isNaN來判斷,例如:
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true); // false isNaN(null); // false isNaN(1); // false
如果說NaN是JavaScript的一個(gè)坑的話,isNaN就是另一個(gè)坑了。因?yàn)?b>isNaN會(huì)先將傳遞給它的對(duì)象轉(zhuǎn)化為數(shù)字類型。而我們知道,對(duì)于普通的字符串,轉(zhuǎn)化為數(shù)字類型會(huì)返回NaN。于是就踩坑了。。。
isNaN("1"); // fales "1" 被轉(zhuǎn)化為數(shù)字 1,因此返回false isNaN("SegmentFault"); // true "SegmentFault" 被轉(zhuǎn)化成數(shù)字 NaN
所以說,通常對(duì)字符串使用isNaN方法會(huì)返回true,isNaN坑爹了——當(dāng)然,isNaN也許會(huì)辯駁說這不是它的坑,這是JavaScript強(qiáng)制類型轉(zhuǎn)換的坑。
那么,可不可以不做類型轉(zhuǎn)換直接判斷呢?ES6用Number.isNaN填上了這個(gè)坑。Number.isNaN不會(huì)轉(zhuǎn)換對(duì)象的類型。
Number.isNaN("SegmentFault"); // false
ES6的這個(gè)新特性,已經(jīng)被NodeJS和部分瀏覽器所支持。
編撰 SegmentFault
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/78038.html
摘要:二進(jìn)制和八進(jìn)制表示法提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴或和或表示。用來檢查是否為有窮以及是否為這兩個(gè)新方法只對(duì)數(shù)值有效,非數(shù)值一律返回。引入了和這兩個(gè)常量,用來表示這個(gè)范圍的上下限。因?yàn)橛芯认拗疲^的次方的值無法精確表示。 1 二進(jìn)制和八進(jìn)制表示法 ES6提供了二進(jìn)制和八進(jìn)制數(shù)值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:的數(shù)字類型是基于標(biāo)準(zhǔn)實(shí)現(xiàn)的,該標(biāo)準(zhǔn)也被稱為浮點(diǎn)數(shù)使用的是雙精度即位進(jìn)制由于數(shù)字值可以使用對(duì)象進(jìn)行封裝,因此數(shù)字值可以調(diào)用中的方法。 數(shù)組 和其他語(yǔ)言不同,在JavaScript中,數(shù)組可以擁有不同值類型,可以使字符串,數(shù)字,對(duì)象,還可以是數(shù)組(多維數(shù)組就是這樣形成的). 聲明數(shù)組后,可以直接通過索引的方式進(jìn)行賦值: var arr = []; arr.length; //0 ...
摘要:返回布爾值,表示參數(shù)字符串是否在原字符串的頭部。模板字符串之中還能調(diào)用函數(shù)。其他對(duì)字符串還有許多擴(kuò)展,例如對(duì)字符表示的擴(kuò)充以及為字符串提供了遍歷方法詳情請(qǐng)點(diǎn)擊正則的擴(kuò)展構(gòu)造函數(shù)在中,構(gòu)造函數(shù)的參數(shù)有兩種情況。 ES6對(duì)各種基本類型都做了擴(kuò)展,內(nèi)容有些多,本章節(jié)挑選比較重要的擴(kuò)展說明。 1 字符串的擴(kuò)展 1.1 includes(), startsWith(), endsWith() 傳...
閱讀 3360·2021-11-11 16:54
閱讀 3502·2021-10-11 10:58
閱讀 1246·2021-08-30 09:41
閱讀 1802·2019-08-30 15:54
閱讀 2025·2019-08-30 14:00
閱讀 2696·2019-08-29 17:13
閱讀 1656·2019-08-29 15:19
閱讀 601·2019-08-29 15:14