最近在學習ES6,關於數值擴充這有點疑問。
ES6在Number物件上提供兩個方法:Number.isFinite() 和 Number.isNaN()
與ES5不同在於取消了先呼叫一次Number()將非數值轉換為數值後再判斷。
注意:兩個方法與傳統的 isFinite() 和 isNaN() 方法區別在於,傳統方法先呼叫 Number() 將非數值的值轉為數值,再判斷。這兩個方法只對數值有效,非數值一律回傳 false。
不太理解為什麼要這麼做,我覺得先呼叫一次Number()將非數值轉換成數值後再判斷不是應該更好嗎?
可以看看MDN的描述
而isFinite的你可以比較下Number.isFinite(true)和isFinite(true)就知道了。當然,Number.isFinite("")和isFinite("")也可以。
這兩個功能是Number上判斷一個數值是否為有限的,或者是否為NaN,前提是數字,如果將string等內部暗操作轉化成數字,就失去其本身所要直接表達的含義,還有帶來一些其它問題,就變成不只可以判斷數字,也可以判斷string等類型。
參考連結:
es6
isNaN