ES6 之 數值的擴展

二進制和八進制的表示法

  • 二進制和八進制的新寫法:前綴0b(或0B)和0o(或 0O)標示

  • ES5嚴格模式下,八進制不允許使用前綴0表示
    ES6進一步明確使用前綴0o表示

    // 非嚴格模式
    (function(){
      console.log(0o11 === 011);
    })() // true

    // 嚴格模式
    (function(){
      'use strict';
      console.log(0o11 === 011);
    })() // Uncaught SyntaxError: Octal literals are not allowed in strict mode
  • 0b和0o前綴的字符串數值轉十進制,要使用Number方法
    Number('0b111');//7
    Number('0o10'); //8

Number.isFinite(),Number.isNaN()

  • Number.isFinite()用來檢查一個數值是否爲有限的(finite),即不是Infinity
    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('false'));;     //false
    console.log(Number.isFinite('15'));     //false
    console.log(Number.isFinite(true));     //false
  • Number.isNaN()用來檢查一個值是否爲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

    isFinite(25) // true
    isFinite("25") // true
    Number.isFinite(25) // true
    Number.isFinite("25") // false

    isNaN(NaN) // true
    isNaN("NaN") // true
    Number.isNaN(NaN) // true
    Number.isNaN("NaN") // false
    Number.isNaN(1) // false    

ps:以上兩個Number新方法針對傳統全局的isFinite()和isNaN()的區別爲,
傳統方法先調用Number()將非數值轉爲數值,再進行判斷
新方法只對數值有效,對於非數值的一律爲false

Number.parseInt(),Number.parseFloat()

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

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

    // 這樣做的目的,是逐步減少全局性方法,使得語言逐步模塊化。
    Number.parseInt === parseInt // true
    Number.parseFloat === parseFloat // true    

Number.isInteger()

  • Number.isInteger()用來判斷一個數值是否爲整數。
    Number.isInteger(25) // true
    Number.isInteger(25.1) // false

    # JavaScript 內部,整數和浮點數採用的是同樣的儲存方法,所以 2525.0 被視爲同一個值。
    Number.isInteger(25) // true
    Number.isInteger(25.0) // true

    # 如果參數不是數值,Number.isInteger返回falseNumber.isInteger() // false
    Number.isInteger(null) // false
    Number.isInteger('15') // false
    Number.isInteger(true) // false

如果對數據精度的要求較高,不建議使用Number.isInteger()判斷一個數值是否爲整數
5E-325由於值太小,會被自動轉爲0,因此返回true

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章