摘要:中有一個特殊的對象,它表示一個非法的數字。這個對象十分特殊,它的類型是,屬于原始值,但是和自身不相等。和自身不相等,乍一看違反直覺,但卻符合的規定。的委員會成員曾經解釋過將設計為不等的權衡。的這個新特性,已經被和部分瀏覽器所支持。
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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/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() 傳...
閱讀 3364·2021-11-11 16:54
閱讀 3523·2021-10-11 10:58
閱讀 1262·2021-08-30 09:41
閱讀 1808·2019-08-30 15:54
閱讀 2032·2019-08-30 14:00
閱讀 2706·2019-08-29 17:13
閱讀 1673·2019-08-29 15:19
閱讀 613·2019-08-29 15:14