摘要:學(xué)習(xí)筆記數(shù)值的擴(kuò)展有一些不常用或者還不支持的就沒有記錄了總體來說本篇只是一個(gè)備忘而已用來檢查一個(gè)數(shù)值是否為有限的。兩個(gè)新方法只對數(shù)值有效,非數(shù)值一律返回。參考引用數(shù)值擴(kuò)展
es6學(xué)習(xí)筆記-數(shù)值的擴(kuò)展
Number.isFinite(), Number.isNaN()有一些不常用或者還不支持的就沒有記錄了,總體來說本篇只是一個(gè)備忘而已
Number.isFinite()用來檢查一個(gè)數(shù)值是否為有限的(finite)。
console.log(Number.isFinite(15)); // true console.log(Number.isFinite(0.8)); // true console.log(Number.isFinite(NaN)); // false console.log(Number.isFinite(Infinity)); // false console.log(Number.isFinite(-Infinity)); // false console.log(Number.isFinite("foo")); // false,字符串也是false console.log(Number.isFinite("15")); // false console.log(Number.isFinite(true)); // false,布爾值也是false
Number.isNaN()用來檢查一個(gè)值是否為NaN。
console.log(Number.isNaN(NaN)) // true console.log(Number.isNaN(15)) // false console.log(Number.isNaN("15")) // false console.log(Number.isNaN(true)) // false console.log(Number.isNaN(9/NaN)) // true console.log(Number.isNaN("true"/0)) // true console.log(Number.isNaN("true"/"true")) // true
parseInt()和parseFloat()兩個(gè)新方法只對數(shù)值有效,非數(shù)值一律返回false。
ES6將全局方法parseInt()和parseFloat(),移植到Number對象上面,行為完全保持不變。
// ES5的寫法 parseInt("12.34") // 12 parseFloat("123.45#") // 123.45 // ES6的寫法 Number.parseInt("12.34") // 12Number.isInteger()
Number.isInteger()用來判斷一個(gè)值是否為整數(shù)。需要注意的是,在JavaScript內(nèi)部,整數(shù)和浮點(diǎn)數(shù)是同樣的儲存方法,所以3和3.0被視為同一個(gè)值。
console.log(Number.isInteger(25)) // true console.log(Number.isInteger(25.0)) // true console.log(Number.isInteger(25.1)) // false console.log(Number.isInteger("15")) // false console.log(Number.isInteger(true)) // falseNumber.EPSILON
ES6在Number對象上面,新增一個(gè)極小的常量Number.EPSILON,為浮點(diǎn)數(shù)計(jì)算,設(shè)置一個(gè)誤差范圍。
如果這個(gè)誤差能夠小于Number.EPSILON,我們就可以認(rèn)為得到了正確結(jié)果。
0.1 + 0.2 // 0.30000000000000004 0.1 + 0.2 - 0.3 // 5.551115123125783e-17 5.551115123125783e-17.toFixed(20) // "0.00000000000000005551" //無限接近0 Number.EPSILON.toFixed(20) // "0.00000000000000022204" //只要比這個(gè)數(shù)小,我們就當(dāng)他是正確的 function withinErrorMargin (left, right) { return Math.abs(left - right) < Number.EPSILON; } console.log(withinErrorMargin(0.1 + 0.2, 0.3)) // true console.log(withinErrorMargin(0.2 + 0.2, 0.3)) // false安全整數(shù)和Number.isSafeInteger()
JavaScript能夠準(zhǔn)確表示的整數(shù)范圍在-2^53到2^53之間(不含兩個(gè)端點(diǎn)),超過這個(gè)范圍,無法精確表示這個(gè)值。
console.log(Math.pow(2, 53)); // 9007199254740992 console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) + 1)//false console.log(Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1) //true,等于一個(gè)比最大范圍少于1的數(shù)
同理可鑒Number.MAX_SAFE_INTEGER
Number.isSafeInteger()則是用來判斷一個(gè)整數(shù)是否落在這個(gè)范圍之內(nèi)。
console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER - 1)) // false console.log(Number.isSafeInteger(Number.MIN_SAFE_INTEGER)) // true console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER)) // true console.log(Number.isSafeInteger(Number.MAX_SAFE_INTEGER + 1)) // falseMath對象的擴(kuò)展 Math.trunc
Math.trunc方法用于去除一個(gè)數(shù)的小數(shù)部分,返回整數(shù)部分
console.log(Math.trunc(4.1)) // 4 console.log(Math.trunc(4.9)) // 4 console.log(Math.trunc(-4.1)) // -4 console.log(Math.trunc(-4.9)) // -4 console.log(Math.trunc(-0.1234)) // -0Math.sign()
Math.sign方法用來判斷一個(gè)數(shù)到底是正數(shù)、負(fù)數(shù)、還是零。
console.log(Math.sign(-5)) // -1 console.log(Math.sign(5)) // 1 console.log(Math.sign(0)) // 0 console.log(Math.sign(-0)) // -0 console.log(Math.sign(NaN)) // NaN console.log(Math.sign("foo")); // NaN console.log(Math.sign()); // NaN
參考引用:
es6數(shù)值擴(kuò)展
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82000.html
摘要:學(xué)習(xí)筆記函數(shù)擴(kuò)展函數(shù)參數(shù)的默認(rèn)值如果參數(shù)默認(rèn)值是變量,那么參數(shù)就不是傳值的,而是每次都重新計(jì)算默認(rèn)值表達(dá)式的值。屬性函數(shù)的屬性,返回該函數(shù)的函數(shù)名。箭頭函數(shù)詳細(xì)鏈接參考引用函數(shù)擴(kuò)展 es6學(xué)習(xí)筆記-函數(shù)擴(kuò)展_v1.0 函數(shù)參數(shù)的默認(rèn)值 function Point(x = 0, y = 0) { this.x = x; this.y = y; } var p = ne...
摘要:考慮到環(huán)境導(dǎo)致的行為差異太大,應(yīng)該避免在塊級作用域內(nèi)聲明函數(shù)。函數(shù)聲明語句函數(shù)表達(dá)式循環(huán)循環(huán)還有一個(gè)特別之處,就是循環(huán)語句部分是一個(gè)父作用域,而循環(huán)體內(nèi)部是一個(gè)單獨(dú)的子作用域。聲明一個(gè)只讀的常量。 es6學(xué)習(xí)筆記-let,const和塊級作用域_v1.0 塊級作用域 javascript 原來是沒有塊級作用域的,只有全局作用域和函數(shù)作用域 例子1 因?yàn)闆]有塊級作用域,所以每次的i都是一...
摘要:學(xué)習(xí)筆記變量析構(gòu)允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)。有一個(gè)屬性用屬性來獲取字符串長度數(shù)值和布爾值的解構(gòu)賦值解構(gòu)賦值時(shí),如果等號右邊是數(shù)值和布爾值,則會(huì)先轉(zhuǎn)為對象。 es6學(xué)習(xí)筆記-變量析構(gòu)_v1.0 ES6 允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)(Destructuring)。 如果解構(gòu)失敗,變量的值等于undefine...
摘要:學(xué)習(xí)筆記字符串的擴(kuò)展字符的表示法允許使用的形式表示一個(gè)字符,但在之前,單個(gè)碼點(diǎn)僅支持到,超出該范圍的必須用雙字節(jié)形式表示,否則會(huì)解析錯(cuò)誤。返回布爾值,表示參數(shù)字符串是否在源字符串的頭部。,是引入了字符串補(bǔ)全長度的功能。 es6學(xué)習(xí)筆記-字符串的擴(kuò)展_v1.0 字符的Unicode表示法 JavaScript 允許使用uxxxx的形式表示一個(gè)字符,但在 ES6 之前,單個(gè)碼點(diǎn)僅支持u00...
摘要:學(xué)習(xí)筆記字符串模板實(shí)例模板編譯先組成一個(gè)模板使用放置代碼使用輸出表達(dá)式。這被稱為標(biāo)簽?zāi)0骞δ堋T摂?shù)組的成員與數(shù)組完全一致參考引用字符串?dāng)U展 es6學(xué)習(xí)筆記-字符串模板_v1.0 實(shí)例:模板編譯 //先組成一個(gè)模板 var template = ` //使用放置JavaScript代碼 //使用輸出JavaScript表達(dá)式。 `; //這是編譯模板的函數(shù),將模...
閱讀 3116·2021-11-18 10:02
閱讀 2623·2021-10-13 09:47
閱讀 3066·2021-09-22 15:07
閱讀 800·2019-08-30 15:43
閱讀 1818·2019-08-30 10:59
閱讀 1695·2019-08-29 15:34
閱讀 1710·2019-08-29 15:06
閱讀 449·2019-08-29 13:28