搜尋

首頁  >  問答  >  主體

JavaScript ES6中 Number.isFinite() 和 Number.isNaN()

最近在學習ES6,關於數值擴充這有點疑問。

ES6在Number物件上提供兩個方法:Number.isFinite()Number.isNaN()

與ES5不同在於取消了先呼叫一次Number()將非數值轉換為數值後再判斷。

注意:兩個方法與傳統的 isFinite() 和 isNaN() 方法區別在於,傳統方法先呼叫 Number() 將非數值的值轉為數值,再判斷。這兩個方法只對數值有效,非數值一律回傳 false。

不太理解為什麼要這麼做,我覺得先呼叫一次Number()將非數值轉換成數值後再判斷不是應該更好嗎?

巴扎黑巴扎黑2748 天前555

全部回覆(2)我來回復

  • phpcn_u1582

    phpcn_u15822017-05-18 10:54:30

    可以看看MDN的描述

    而isFinite的你可以比較下Number.isFinite(true)和isFinite(true)就知道了。當然,Number.isFinite("")和isFinite("")也可以。

    回覆
    0
  • 黄舟

    黄舟2017-05-18 10:54:30

    這兩個功能是Number上判斷一個數值是否為有限的,或者是否為NaN,前提是數字,如果將string等內部暗操作轉化成數字,就失去其本身所要直接表達的含義,還有帶來一些其它問題,就變成不只可以判斷數字,也可以判斷string等類型。
    參考連結:

    es6
    isNaN

    回覆
    0
  • 取消回覆