最近在學(xué)習(xí)ES6,關(guān)于數(shù)值擴(kuò)展這有點(diǎn)疑問。
ES6在Number對象上提供兩個方法:Number.isFinite() 和 Number.isNaN()
與ES5不同在于取消了先調(diào)用一次Number()將非數(shù)值轉(zhuǎn)化為數(shù)值后再判斷。
注意:兩個方法與傳統(tǒng)的 isFinite() 和 isNaN() 方法區(qū)別在于,傳統(tǒng)方法先調(diào)用 Number() 將非數(shù)值的值轉(zhuǎn)為數(shù)值,再判斷。這兩個方法只對數(shù)值有效,非數(shù)值一律返回 false。
不太理解為什么要這么做,我覺得先調(diào)用一次Number()將非數(shù)值轉(zhuǎn)化為數(shù)值后再判斷不是應(yīng)該更好嗎?
可以看看MDN的描述
而isFinite的你可以比較下Number.isFinite(true)和isFinite(true)就知道了。當(dāng)然,Number.isFinite("")和isFinite("")也可以。
這兩個功能是Number上判斷一個數(shù)值是否為有限的,或者是否為NaN,前提是數(shù)字,如果將string等內(nèi)部暗操作轉(zhuǎn)化成數(shù)字,就失去其本身所要直接表達(dá)的含義,還有帶來一些其它問題,就變成不僅僅可以判斷數(shù)字,也可以判斷string等類型。
參考鏈接:
es6
isNaN