第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

ES6-10 入門教程

ES6+ Number 對象的方法

1. 前言

本節(jié)主要講解 Number 對象下剩余的方法,Number 對象把之前在全局上的方法移植了過來,并對有缺陷的方法進(jìn)行了補充和修復(fù),上節(jié)我們已經(jīng)學(xué)習(xí)了全局下的 isFinite()isNaN() 兩種方法存在類型轉(zhuǎn)換,對于判斷數(shù)值來說存在歧義。下面我們來看看,ES6 中移植的沒有變的函數(shù)和新增的一些函數(shù)。

2. Number.parseInt()&Number.parseFloat()

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

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

Number.parseInt === parseInt;				// true
Number.parseFloat === parseFloat;		// true

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

// ES5的寫法
parseInt('12.34') 						// 12
parseFloat('123.45#') 				// 123.45

// ES6的寫法
Number.parseInt('12.34') 			// 12
Number.parseFloat('123.45#')  // 123.45

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

3. Number.isInteger()

在學(xué)習(xí)這個函數(shù)之前,我們先來回顧一下,我們是怎么判斷一個值為整數(shù)的?

3.1 判斷一個值為整數(shù)

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

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.roundMath.ceil、Math.floor 判斷,因為整數(shù)取整后還是等于自己。利用這個特性來判斷是否是整數(shù),使用 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 把判斷整數(shù)提升到了語言層面,下面我們來看下 Number.isInteger() 的使用。

3.2 Number.isInteger () 的用法

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

Number.isInteger(25) // true
Number.isInteger(25.1) // false

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

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 語法的瀏覽器中可以使用上面的兩種方式進(jìn)行 Polyfill 處理。

4. Number.isSafeInteger()

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

一個安全整數(shù)是一個符合下面條件的整數(shù):

  • 可以準(zhǔn)確地表示為一個 IEEE-754 雙精度數(shù)字;
  • 其 IEEE-754 表示不能是舍入任何其他整數(shù)以適應(yīng) IEEE-754 表示的結(jié)果。

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

安全整數(shù)范圍為 -(2e53 - 1)到 2e53 - 1 之間的整數(shù),包含 -(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

5. 小結(jié)

本節(jié)學(xué)習(xí)了 Number 對象下的方法,講解了為什么把全局的方法移植到 Number 對象下,以及對比沒有 ES6 時是怎么判斷數(shù)值為整數(shù)的情況,通過對 Number 對象下的方法的學(xué)習(xí),可以看到 ES6 在收斂全局的方法,使語言逐步模塊化,更加符合語言的規(guī)范。