摘要:數(shù)值類型擴展類型新增了如下特性支持二進制和八進制二進制用或開頭八進制用或開頭新加方法判斷一個數(shù)字是否有限方法判斷一個變量是否。值得注意的是如果將非數(shù)值傳入這兩個函數(shù)一律返回。對于無法轉換為數(shù)值的參數(shù)返回符合函數(shù)。
數(shù)值類型擴展
Number 類型新增了如下特性:
支持二進制和八進制
二進制用 0b 或 0B 開頭, 八進制用 0o 或 0O 開頭:
Number("0b1101"); //13 Number("0o107"); //71
新加 Number.isFinite() 方法判斷一個數(shù)字是否有限, Number.isNaN() 方法判斷一個變量是否 NaN。值得注意的是, 如果將非數(shù)值傳入這兩個函數(shù), 一律返回 false。
將原有的 window.parseInt() 和 window.parseFloat() 移植到了 Number.parseInt() 和 Number.parseFloat(), 行為保持不變。
Number.parseInt === window.parseInt; //true Number.parseFloat === window.parseFloat; //true
引入 Number.isInteger() 判斷一個數(shù)字是不是整數(shù), 注意到, 3.0 也是個整數(shù)。如果將非數(shù)值傳入函數(shù), 一律返回 false。
Number.EPSILON, 一個極小的量, 用來解決浮點數(shù)計算的誤差
if(0.1 + 0.2 === 0.3){ console.log("true"); } else { console.log("false") } //以上if語句將輸出 false if(0.1 + 0.2 - 0.3 < Number.EPSILON){ console.log("true"); } else { console.log("false") } //以上if語句將輸出 true //其實我們可以封裝一下: Object.defineProperty(Number, "isEqual", { value: function isEqual(a, b){ return Math.abs(a - b) < Number.EPSILON; }, writable: true, configurable: true, enumerable: false }); Number.isEqual(0.1 + 0.2, 0.3); //true
Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER 和 Number.isSafeInteger()
js 所能表示的整數(shù)介于$-2^{53}$~$2^{53}$之間, 超過的數(shù)就會有誤差, 所以:
Number.MAX_SAFE_INTEGER === Math.pow(2, 53) - 1; //true Number.MIN_SAFE_INTEGER === -Math.pow(2, 53) + 1; //true
我們使用Number.isSafeInteger()判斷一個數(shù)是否在這個范圍內, 返回 Boolean 值。如果傳入非數(shù)字或非整數(shù), 一律返回 false。這里同樣注意:3.0是個整數(shù)。
Math對象擴展
對于數(shù)學運算, 這里不再一一展開了, 以下列舉了 ES6 新增的17個數(shù)學函數(shù)
Math.trunc(); 直接舍去一個數(shù)的小數(shù)部分。對于無法轉換為數(shù)值的參數(shù), 返回 NaN
Math.sign(); 符合函數(shù)。傳入正數(shù)返回1, 負數(shù)返回-1, 0返回0, -0返回-0, 其他值返回 NaN
Math.cbrt(); 返回一個數(shù)的立方根。對于無法轉換為數(shù)值的參數(shù), 返回 NaN
Math.clz32(); 返回一個數(shù)的32位無符號二進制的前導零個數(shù)。對于小數(shù), 只考慮器整數(shù)部分, 對于無法轉換為數(shù)值的參數(shù), 返回 32
Math.imul(); 返回2個數(shù)有符號32位乘積的十進制, 相當于(a*b)|0, 通常和乘法計算一致, 但可防止結果溢出
Math.fround(); 返回一個數(shù)的單精度浮點形式。對于無法轉換為數(shù)值的參數(shù), 返回 NaN
Math.hypot(); 返回所以函數(shù)平方和的平方根(歐氏距離)。只要有1個無法轉換為數(shù)值的參數(shù), 返回 NaN
Math.expm1(); 即$e^x-1$
Math.log1p(); 即$ln(x+1)$, 參數(shù)小于0或不能轉換為大于零的數(shù), 返回 NaN
Math.log10(); 即$log_{10}{x}$, 參數(shù)小于0或不能轉換為大于零的數(shù), 返回 NaN
Math.log2(); 即$log_{2}{x}$, 參數(shù)小于0或不能轉換為大于零的數(shù), 返回 NaN
Math.sinh(); 返回參數(shù)的雙曲正弦值
Math.cosh(); 返回參數(shù)的雙曲余弦值
Math.tanh(); 返回參數(shù)的雙曲正切值
Math.asinh(); 返回參數(shù)的反雙曲正弦值
Math.acosh(); 返回參數(shù)的反雙曲余弦值
Math.atanh(); 返回參數(shù)的反雙曲正切值
指數(shù)運算符
ES7 提出指數(shù)運算符(**),已可以實現(xiàn)
2 ** 3 = 8; //相當于 Math.pow(2, 3) //支持賦值運算 let a = 2; a **= 3; console.log(a); //8
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/97424.html
摘要:二進制和八進制表示法提供了二進制和八進制數(shù)值的新的寫法,分別用前綴或和或表示。用來檢查是否為有窮以及是否為這兩個新方法只對數(shù)值有效,非數(shù)值一律返回。引入了和這兩個常量,用來表示這個范圍的上下限。因為有精度限制,超過的次方的值無法精確表示。 1 二進制和八進制表示法 ES6提供了二進制和八進制數(shù)值的新的寫法,分別用前綴0b(或0B)和0o(或0O)表示。 console.log(0b10...
摘要:屬性的簡潔表示法允許直接寫入變量和函數(shù)作為對象的屬性和方法。,中有返回一個數(shù)組,成員是參數(shù)對象自身的不含繼承的所有可遍歷屬性的鍵名。對象的擴展運算符目前,有一個提案,將解構賦值擴展運算符引入對象。 1 屬性的簡潔表示法 ES6允許直接寫入變量和函數(shù)作為對象的屬性和方法。 寫入屬性 var name = value; var obj = { name }; console.log...
摘要:基本類型是一種解決命名沖突的工具。這樣,就有了個基本類型和個復雜類型使用需要注意以下幾點和一樣不具有構造函數(shù),不能用調用。判斷對象是否某個構造函數(shù)的實例,運算符會調用它是一個數(shù)組對象屬性。即,當存在時,以此為構造函數(shù)構建對象。 Symbol基本類型 Symbol 是一種解決命名沖突的工具。試想我們以前定義一個對象方法的時候總是要檢查是否已存在同名變量: if(String && Str...
摘要:筆記和和是塊作用域的,是聲明常量用的。一個對象如果要有可被循環(huán)調用的接口,就必須在的屬性上部署遍歷器生成方法原型鏈上的對象具有該方法也可。這種方式會訪問注冊表,其中存儲了已經(jīng)存在的一系列。這種方式與通過定義的獨立不同,注冊表中的是共享的。 ECMAScript6 筆記 let 和 const let和const是塊作用域的 ,const是聲明常量用的。 {let a = 10;} a ...
閱讀 1899·2021-11-24 09:39
閱讀 2555·2021-10-14 09:43
閱讀 3326·2021-10-08 10:10
閱讀 2278·2021-09-22 15:54
閱讀 2345·2019-08-29 17:20
閱讀 1581·2019-08-28 18:14
閱讀 2383·2019-08-26 13:28
閱讀 1121·2019-08-26 12:16