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