`isNaN()` 是一個全局函式,用於檢查其參數是否是非數字值。如果參數是特殊的非數字值 NaN(或者能被轉換為這樣的值),則返回 `true`;如果參數是其他值,則返回 `false`。
`isNaN()` 的基本語法是 `isNaN(x)`,其中 `x` 是要檢測的值。這個函式通常用於檢測 `parseFloat()` 和 `parseInt()` 的結果,以判斷它們表示的是否是合法的數字。它也可以用來檢測算數錯誤,比如用 0 作除數的情況。
需要注意的是,`isNaN()` 存在隱式的類型轉換。例如,`isNaN("123")` 會返回 `false`,因為 `"123"` 可以被轉換為數字。此外,`isNaN()` 不能用來判斷是否嚴格等於 NaN。ES6 提供了 `Number.isNaN()` 方法來解決這個問題,它不會將傳入的非數值類型進行強制轉換為數值類型,而是首先判斷傳入的參數是否為數值類型,只要是非數值類型就直接返回 `false`。
以下是一些使用 `isNaN()` 的示例:
`isNaN(NaN)` 返回 `true`。
`isNaN(true)` 返回 `false`,因為 `true` 可以被轉換為數字 `1`。
`isNaN('aaa')` 返回 `true`,因為 `'aaa'` 不能被轉換為數字。
`isNaN(null)` 返回 `false`,因為 `null` 可以被轉換為 `0`。
`isNaN('')` 返回 `false`,因為空字元串可以被轉換為 `0`。
`isNaN(undefined)` 返回 `true`,因為 `undefined` 不能被轉換為數字。
以上是 `isNaN()` 的基本用法和注意事項。