isNaN() | JavaScript parseInt NaN
isNaN()函式會判斷某個數值是不是NaN[1]。注意:在isNaN函式裡面,有個有趣的[2]強制性規則。你可能會想改用在ECMAScript2015導入的Number.isNaN()(en-US)[3]。參數[4]value[5]要測試的數值。回傳值[6]如果給定值是NaN[7]就回傳true、否則就回傳false。為什麼要用isNaN函式[8]與其他JavaScript的值不同,你不可能靠等號運算符(==與===)來判斷某個值是不是NaN[9],因為連NaN==NaN與NaN===NaN的結果都是false。因此,isNaN函式是必要的。NaN值的來源[10]NaN會在算術運算(arithmeticoperations)出現undefined或是unrepresentable值的...
isNaN() 函式會判斷某個數值是不是 NaN[1]。注意:在 isNaN 函式裡面,有個有趣的[2]強制性規則。你可能會想改用在 ECMAScript 2015 導入的 Number.isNaN() (en-US)[3]。
參數[4]value[5]要測試的數值。
回傳值[6]如果給定值是 NaN[7] 就回傳 true、否則就回傳 false。
為什麼要用 isNaN 函式[8]與其他 JavaScript 的值不同,你不可能靠等號運算符(== 與 ===)來判斷某個值是不是 NaN[9],因為連 NaN == NaN 與 NaN === NaN 的結果都是 false。因此,isNaN 函式是必要的。
NaN 值的來源[10]NaN 會在算術運算(arithmetic operations)出現 undefined 或是 unrepresentable 值的結果時產生。這些值不一定是溢出條件。NaN 亦為試圖給毫無可用數字的原始值、予以強制運算之結果。
例如,零除以零的結果會是 NaN——不過把其他數字除以零則不是 NaN。
令人困惑的特殊狀況行為[11]從最早的 isNaN 函式版本規範始,其針對非數值之行為,不斷教人困惑至極。當 isNaN 函式的參數並非數字[12]型別時,此值會先強制轉換到數字。該值接著會測定此值是否為 NaN[13]。因此,當被強制轉換的非數字,給出了有效的非 NaN 值(經典案例為空的字串與布林原始值:它們在強制轉換時,會給予數字結果 0 或 1)時,會回傳不如預期的「false」值:以空的字串為例,它很明顯地「非數字」。這段教人糾結的點,乃出於「非數字」術語的「數字」一詞、由 IEEE-754 浮點值定義之事實而來。這個函式要解釋為「當這個值,被強制轉換為數值時,它還是 IEEE-754 的『非數字』值嗎?」的答案。
最新的 ECMAScript(ES2015)版本導入了 Number.isNaN() (en-US)[14] 函式。儘管 Number.isNaN 的 NaN 依舊維持了數字上的意義、而不是簡單的「非數字」,Number.isNaN(x) 在偵測 x 為 NaN 與否時比較可靠。另外,如果在缺少 N...