1. 程式人生 > >5-ES6-數值的擴充套件

5-ES6-數值的擴充套件

數值的擴充套件 1-1、二進位制和八進位制表示法 ES6提供了二進位制和八進位制數值的新寫法,分別用【0b】和【0o】表示; 嚴格模式下,八進位制必須用【0o】表示 0o11 === 011; // true

1-2、如果要將使用【0b】和【0x】字首的【字串】數值轉為十進位制數值,要使用【number】方法; Number( ‘0b111’ ); // 二進位制轉十進位制 7 Number( ‘0o10’ ); // 八進位制轉十進位制 8

1-3、ES6將全域性方法parseInt()和parseFloat()移植到了Number物件上面,行為完全保持不變; Number.parseInt( ‘12.34’ ); // 12 Number.parseFloat( ‘123.45’ ); // 123.45 Number.parseFloat( ‘123.45#’ );// 123.45

1-4、Number.isInteger()用來判斷一個值是否為整數;JS內部,整數和浮點數是同樣的儲存方法;3 === 3.0 Number.isInteger( 25 ); // true Number.isInteger( 25.0 ); // true Number.isInteger( 25.1 ); // false

Math物件的擴充套件 【 Math.trunc() 】 1-1、Math.trunc()用於去除一個數的小數部分,返回整數部分; Math.trunc( 4.1 ); // 4 Math.trunc( 4.9 ); // 4 Math.trunc( -4.1 ); // -4 Math.trunc( -4.9 ); // -4

1-2、對於非數值,Math.trunc()內部使用Number方法將先轉為數值; Math.trunc( ‘123.456’ ); // 123

1-3、對於空值和無法擷取整數的值,返回NaN Math.trunc( NaN ); // NaN Math.trunc( ‘foo’ ); // NaN Math.trunc(); // NaN

1-4、對於沒有部署這個方法的環境,可以用下面的程式碼模擬; Math.trunc = Math.trunc || function(){ return x < 0 ? Math.ceil( x ) : Math.floor( x ); // x是非數值時會進行隱式轉換 };

【 Math.sign() 】 2-1、Math.sign()用來判斷一個數是【正數】、【負數】、【零】;【對於非數值會先將其轉換為數值】; 其返回值有5種情況; 1)引數為【正數】,返回+1 2)引數為【負數】,返回-1 3)引數為【0】,返回0 4)引數為【-0】,返回-0 5)其他值,返回NaN Math.sign( -5 ); // -1 Math.sign( 5 ); // +1 Math.sign( 0 ); // +0 Math.sign( -0 ); // -0 Math.sign( NaN ); // NaN Math.sign( ‘9’ ); // +1 Math.sign( ‘foo’ ); // NaN Math.sign(); // NaN

【 Math.cbrt() 】 2-1、Math.cbrt()用於計算一個數的立方根; Math.cbrt( -1 ); // -1 Math.cbrt( 0 ); // 0 Math.cbrt( 1 ); // 1 Math.cbrt( 2 ); // 1.2599210498948734

2-2、對於非數值,Math.cbrt()方法內部也是先使用Number方法將其轉換為數值;其他值,返回NaN Math.cbrt( ‘8’ ); // 2 Math.cbrt( ‘hello’ ); // NaN