gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

es6 number對象的新增方法有哪些

es6 number新增方法有:1、“Number.isFinite()”,可判斷指定值是否為一個有限的數值;2、“Number.isNaN()”,可檢測變量是否是一個NaN;3、“Number.parseInt()”,可將字符串轉換為整數;4、“Number.parseFloat()”,可將字符串轉換為浮點數;5、“Number.isInteger()”,可判斷值是否為整數。

es6 number對象的新增方法有哪些

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

在 ES5 中,全局下的 isFinite () 和 isNaN () 兩種方法存在類型轉換,對最終的判斷結果存在歧義。ES6 在 Number 對象上,新提供了 Number.isFinite () 和 Number.isNaN () 兩個方法,更加健壯地進行數值的判斷,接下來讓我看看這兩種方法。

Number.isFinite()


在 ES5 中有全局的 isFinite() 函數用來判斷被傳入的參數值是否為一個有限的數值,如果參數是字符串,會首先轉為一個數值,然后在進行驗證。

isFinite(Infinity);  // false isFinite(NaN);       // false isFinite(-Infinity); // false  isFinite(0);         // true isFinite(2e64);      // true isFinite('2e64');    // true  isFinite("0");       // true
登錄后復制

上面的代碼可以看出,字符串也會被先轉為數值再進行判斷,而 ES6 Number 對象上提供的 isFinite() 更健壯,和全局的 isFinite() 函數相比,這個方法不會強制將一個非數值的參數轉換成數值,這就意味著,只有數值類型的值,且是有窮的(finite),才返回 true。

Number.isFinite(Infinity);  // false Number.isFinite(NaN);       // false Number.isFinite(-Infinity); // false  Number.isFinite(0);         // true Number.isFinite(2e64);      // true Number.isFinite('2e64');	// false  Number.isFinite('0');       // false
登錄后復制

Number.isNaN()


在 JavaScript 中與其它的值不同,NaN 不能通過相等操作符(== 和 ===)來判斷 ,因為 NaN == NaN 和 NaN === NaN 都會返回 false。 因此,判斷一個值是不是 NaN 是有必要的。

1、NaN 值的產生

當算術運算的結果返回一個未定義的或無法表示的值時,NaN 就產生了。但是,NaN 并不一定用于表示某些值超出表示范圍的情況。

  • 將某些非數值強制轉換為數值的時候,會得到 NaN。

  • 0 除以 0 會返回 NaN —— 但是其他數除以 0 則不會返回 NaN。

我們知道可以使用 Number() 方法進行類型轉換,下面列舉被強制類型轉換為 NaN 的例子:

Number(undefined)				// NaN Number('undefined')				// NaN Number('string')				// NaN Number({})						// NaN Number('10,3')					// NaN Number('123ABC')				// NaN Number(new Date().toString())	// NaN
登錄后復制

上面的例子可以看出,很多值在強制類型轉換下轉為 NaN,針對這樣的值去進行判斷無疑是有問題的,下面我們來看下 isNaN () 的問題。

2、isNaN () 的問題

默認情況全局下存在方法 isNaN () 用了判斷是否為 NaN 值,它要求接收的是數值類型的參數,但是當參數不是 Number 類型, isNaN 函數會首先嘗試將這個參數轉換為數值,然后才會對轉換后的結果是否是 NaN 進行判斷。

實例:

isNaN(NaN);       // true isNaN(undefined); // true isNaN('undefined')// true isNaN({});        // true  isNaN(true);      // false isNaN(null);      // false isNaN(37);        // false  // strings isNaN("37");      // false: 可以被轉換成數值37 isNaN("37.37");   // false: 可以被轉換成數值37.37 isNaN("37,5");    // true isNaN('123ABC');  // true:  parseInt("123ABC")的結果是 123, 但是Number("123ABC")結果是 NaN isNaN("");        // false: 空字符串被轉換成0 isNaN(" ");       // false: 包含空格的字符串被轉換成0  // dates isNaN(new Date());                // false isNaN(new Date().toString());     // true  isNaN("imooc")   // true: "blabla"不能轉換成數值                  // 轉換成數值失敗, 返回NaN
登錄后復制

結合上面 NaN 是如何產生的例子的結果可以看出,使用 isNaN 來判斷返回的是 true,這顯然不是我們想要的結果。針對這樣的問題,ES6 做了修補,下面我們看 ES6 中的 isNaN 方法。

3、Number.isNaN () 詳情

ES6 提供了 Number.isNaN(x) ,通過這個方法來檢測變量 x 是否是一個 NaN 將會是一種可靠的做法,它不會對所判斷的值進行強制類型轉換。

Number.isNaN(NaN);        // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0)       // true  // 下面這幾個如果使用全局的 isNaN() 時,會返回 true。 Number.isNaN("NaN");      // false,字符串 "NaN" 不會被隱式轉換成數字 NaN。 Number.isNaN(undefined);  // false Number.isNaN('undefined');// false Number.isNaN({});         // false Number.isNaN("blabla");   // false  Number.isNaN(true);   	 // false Number.isNaN(null);   	 // false Number.isNaN(37);   	 // false Number.isNaN("37");   	 // false Number.isNaN("37.37");	 // false Number.isNaN("");   	 // false Number.isNaN(" ");   	 // false
登錄后復制

通過上面的實例,基本覆蓋了現有程序的所有情況,不會出現使用全局下的 isNaN() 多帶來的問題。所有推薦使用 Number.isNaN(x) 方式來判斷是否是 NaN。在不支持 Number.isNaN 函數情況下,可以通過表達式 (x != x) 來檢測變量 x 是不是 NaN 會更加可靠。

Number.parseInt()&Number.parseFloat()


為了保持方法上的統一,把全局下的 parseInt() 和 parseFloat() 移植到 ES6 的 Number 對象上。

ES6 的 Number 對象上提供的 Number.isFinite () 和 Number.isNaN () 兩個函數是相同的,如何證明 Number 下的這兩個方法只是移植全局的呢?可以利用 === 運算符來判斷,如下實例:

Number.parseInt === parseInt;				// true Number.parseFloat === parseFloat;		// true
登錄后復制

上面的代碼返回的結果都為 ture 說明此兩種函數和全局是一樣的,沒有發生變化。具體的使用方法可以參考 ES5 中的 parseInt() 和 parseFloat() 函數。

// ES5的寫法 parseInt('12.34') 						// 12 parseFloat('123.45#') 				// 123.45  // ES6的寫法 Number.parseInt('12.34') 			// 12 Number.parseFloat('123.45#')  // 123.45
登錄后復制

將這兩個全局方法移植到 Number 對象上,為了逐步減少全局性方法,使語言逐步模塊化。

Number.isInteger()


在學習這個函數之前,我們先來回顧一下,我們是怎么判斷一個值為整數的?

1、判斷一個值為整數

一種方法是:任何整數都會被 1 整除,即余數是 0。利用這個規則來判斷是否是整數。就有如下函數:

function isInteger(value) { 	return typeof value === 'number' && value%1 === 0; } isInteger(5) 		// true isInteger(5.5) 	// false isInteger('') 	// false isInteger('8') 	// false isInteger(true) // false isInteger([]) 	// false
登錄后復制

另一種方法是:使用 Math.round、Math.ceil、Math.floor 判斷,因為整數取整后還是等于自己。利用這個特性來判斷是否是整數,使用 Math.floor 示例,如下:

function isInteger(value) { 	return Math.floor(value) === value; } isInteger(5) 		// true isInteger(5.5) 	// false isInteger('') 	// false isInteger('8') 	// false isInteger(true) // false isInteger([]) 	// false
登錄后復制

上面的兩種方法算是比較常用的判斷方式,其他的一些方式都存在一些問題,這里就不一一列舉了。但是,這兩種方法都不夠簡潔,ES6 把判斷整數提升到了語言層面,下面我們來看下 Number.isInteger() 的使用。

2、Number.isInteger () 的用法

Number.isInteger() 是 ES6 新增的函數,用來判斷給定的參數是否為整數。

Number.isInteger(25) // true Number.isInteger(25.1) // false
登錄后復制

如果被檢測的值是整數,則返回 true,否則返回 false。注意 NaN 和正負 Infinity 不是整數。

Number.isInteger(0);         // true Number.isInteger(1);         // true Number.isInteger(-100000);   // true  Number.isInteger(0.8);       // false Number.isInteger(Math.PI);   // false  Number.isInteger(Infinity);  // false Number.isInteger(-Infinity); // false Number.isInteger("100");     // false Number.isInteger(true);      // false Number.isInteger(false);     // false Number.isInteger([1]);       // false
登錄后復制

上面的代碼基本涵蓋了 JavaScript 中的值的判斷,在一些不支持 ES6 語法的瀏覽器中可以使用上面的兩種方式進行 Polyfill 處理。

Number.isSafeInteger()


Number.isSafeInteger() 是 ES6 新增的函數,用來判斷傳入的參數值是否是一個 “安全整數”(safe integer)在數值擴展的 小節 我們介紹了最大安全整數和最小安全整數,不記得的同學可以跳過去看看。

一個安全整數是一個符合下面條件的整數:

  • 可以準確地表示為一個 IEEE-754 雙精度數字;

  • 其 IEEE-754 表示不能是舍入任何其他整數以適應 IEEE-754 表示的結果。

比如,2e53 – 1 是一個安全整數,它能被精確表示,在任何 IEEE-754 舍入模式(rounding mode)下,沒有其他整數舍入結果為該整數。作為對比,2e53 就不是一個安全整數,它能夠使用 IEEE-754 表示,但是 2e53 + 1 不能使用 IEEE-754 直接表示,在就近舍入(round-to-nearest)和向零舍入中,會被舍入為 2e53。

安全整數范圍為 -(2e53 – 1)到 2e53 – 1 之間的整數,包含 -(2e53 – 1)和 2e53 – 1。

Number.isSafeInteger(3);                    // true Number.isSafeInteger(Math.pow(2, 53))       // false Number.isSafeInteger(Math.pow(2, 53) - 1)   // true Number.isSafeInteger(NaN);                  // false Number.isSafeInteger(Infinity);             // false Number.isSafeInteger("3");                  // false Number.isSafeInteger(3.1);                  // false Number.isSafeInteger(3.0);                  // true
登錄后復制

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
999久久欧美人妻一区二区| 日韩精品无码一区二区三区免费| 好吊妞无缓冲视频观看| 免费观看中文字幕| 久久精品香蕉视频| 久久国产亚洲精品无码| 无码 制服 丝袜 国产 另类| 成人一区二区av| 久久国产精品免费观看| 国产av第一区| 99re6这里有精品热视频| 四虎成人在线播放| 色呦呦网站入口| 日韩第一页在线观看| 黄色高清视频网站| 国产成人亚洲综合无码| 伊人再见免费在线观看高清版 | 亚洲自拍偷拍一区二区三区| 熟妇熟女乱妇乱女网站| 欧洲美女和动交zoz0z| 一级一片免费播放| 玖玖精品在线视频| 波多野结衣乳巨码无在线| 日韩免费毛片视频| 在线观看岛国av| 精品日韩在线播放| 欧洲精品一区二区三区久久| 亚洲熟妇av一区二区三区| 亚洲一区二区蜜桃| 三年中文高清在线观看第6集| 黄色网在线视频| av网址在线观看免费| 在线播放黄色av| 欧美激情 国产精品| 国产天堂在线播放| 国产资源中文字幕| 久久国产亚洲精品无码| 在线播放免费视频| 18岁网站在线观看| 爱爱爱视频网站| 国产男女激情视频| 亚洲天堂第一区| 能在线观看的av网站| 潘金莲一级淫片aaaaa免费看| 日韩在线综合网| 亚洲黄色网址在线观看| 三级4级全黄60分钟| 无码毛片aaa在线| 国产福利在线免费| 999香蕉视频| 夜夜添无码一区二区三区| 奇米影视四色在线| 欧美 日韩精品| www婷婷av久久久影片| 国产三级精品三级在线| 九色porny91| 黄色片视频在线免费观看| 少妇熟女一区二区| 亚洲无在线观看| 午夜欧美福利视频| 青青草原av在线播放| 日本福利视频在线观看| 在线观看av免费观看| 91淫黄看大片| www.99在线| 久久久国产欧美| 亚洲一区二区蜜桃| 精品久久久久久中文字幕2017| 国产91xxx| www.亚洲天堂网| 日韩视频在线免费看| 久在线观看视频| 日本精品免费在线观看| 18岁视频在线观看| 亚洲最大综合网| 日韩av自拍偷拍| 精品国产无码在线| 成人短视频在线观看免费| 九九久久九九久久| 波多野结衣av一区二区全免费观看| 精品国产一区二区三区在线| 日本一道在线观看| 国产九色porny| 欧美日韩在线不卡视频| www.天天射.com| 九九热免费在线观看| 国产精品igao网网址不卡| 91精品一区二区三区四区| 妺妺窝人体色www看人体| 日本十八禁视频无遮挡| 日本三区在线观看| 午夜视频在线观| 无码人妻少妇伦在线电影| 国产特级黄色大片| 欧美成人手机在线视频| 久久亚洲精品无码va白人极品| 欧美a在线视频| 一级黄色在线播放| 日本丰满少妇xxxx| 亚洲精品久久久中文字幕| 中文字幕在线中文| 色婷婷综合久久久久中文字幕| 粉色视频免费看| 男女超爽视频免费播放| 国产乱女淫av麻豆国产| 国产精品久久久久久久乖乖| 97超碰人人爽| 久久久久久久久久久视频| 午夜免费视频网站| 日本精品免费在线观看| 日韩人妻精品一区二区三区| 99久久国产宗和精品1上映 | 黄色a级片免费| 日本一区二区三区四区五区六区| 国产综合免费视频| 日b视频免费观看| eeuss中文| 国产aaaaa毛片| av7777777| 妞干网在线视频观看| 黄色www在线观看| 久久精品影视大全| 国产视频一区二区三区在线播放 | 永久免费在线看片视频| 日韩爱爱小视频| 国产成人久久777777| 亚洲 高清 成人 动漫| 妞干网在线播放| 800av在线免费观看| 91香蕉国产线在线观看| 天天操精品视频| 爽爽爽在线观看| 亚洲一级片免费观看| 17c国产在线| 亚洲一区二区三区四区精品| 亚洲最大成人在线观看| 亚洲最大成人在线观看| 在线观看亚洲色图| 亚洲欧美久久久久| 色国产在线视频| 天堂av免费看| www.九色.com| 999精品网站| 超碰影院在线观看| 91av视频免费观看| 性欧美18一19内谢| av网站大全免费| 国产美女三级视频| 日韩一级免费片| 男女啪啪的视频| 你懂的av在线| 污污的网站18| 三级黄色片免费观看| 国产 国语对白 露脸| a在线视频观看| 欧美日韩中文不卡| 400部精品国偷自产在线观看 | 日本a视频在线观看| 国产日韩成人内射视频| 天美一区二区三区| 精品国产av无码一区二区三区| 无码人妻丰满熟妇区96| 性生生活大片免费看视频| 日日噜噜噜夜夜爽爽| 天堂8在线天堂资源bt| 日本人视频jizz页码69| 国产精品videossex国产高清| 国内外成人激情视频| 日本精品一区在线| 日韩av综合在线观看| youjizz.com亚洲| 欧美国产亚洲一区| 国产树林野战在线播放| 久久久久国产一区| 日韩一级片免费视频| 天堂在线精品视频| 国产女女做受ⅹxx高潮| 妞干网在线播放| 亚洲女人在线观看| 福利在线一区二区三区| 欧美大黑帍在线播放| 国产大片一区二区三区| 男人天堂网视频| 日韩成人三级视频| 肉色超薄丝袜脚交| 狠狠操狠狠干视频| 91视频 -- 69xx| 91成人综合网| 在线无限看免费粉色视频| 成年人在线看片| 日本三级免费观看| 日本国产在线播放| 国产精品网站免费| 国产一级爱c视频| 日韩久久久久久久久久久久| 最新免费av网址| 在线看的黄色网址| 一区二区三区免费播放| 成人羞羞国产免费网站| 97视频在线免费播放|