JS中 isNaN() 方法解析


1. isNaN() 存在的意義

由於 NaN 是唯一一個不等於自身的值,不像其他的值,可以用相等操作符來判斷是否等於自身,NaN == NaNNaN === NaN都會返回false,所以isNaN()就誕生了,那它到底起着怎樣的作用呢,且看下文。

2. isNaN() 判斷的原理

isNaN函數接受一個參數,原理是先嘗試將參數轉換為數值型,調用的是Number()方法,再進行判斷。

說到這里就有必要介紹一下Number()方法了,其實Number()方法的原理也有點復雜,具體分兩種情況。
Number()方法也接受一個參數:
一、 參數為原始數據類型
原始數據類型有:數值、字符串、布爾值、undefined、null
先對參數調用valueOf方法,再用Number()方法進行判斷

    //1. 數值:自然轉為數值

    //2. 字符串
    Number('123') // 123
    Number('123abc') // NaN
    Number(' ') // 0

    // 3. 布爾值
    Number(true) // 1
    Number(false) // 0

    // 4. undefined
    Number(undefined) // NaN

    //5. null
    Number(null) // 0

二、參數為對象
先對參數調用valueOf方法,再對參數調用toString()方法,最后用Number()方法進行判斷。
參數為對象時返回的是NaN,除非參數是包含單個數值的數組(數組也是對象)

    Number({a:1}) // NaN
    Number([1, 2, 3]) // 	NaN
    Number([1]) // 1

介紹完Number()方法的原理之后,就可以很好地知道isNaN()判斷的結果了。

3. 什么時候返回 true ,什么時候返回 false

返回 true: NaN、對象(除包含單個數值的數組)、undefined、不能用Number()方法轉為數值型的字符串

返回false: 數值、null、布爾值、能用Number()方法轉為數值型的字符串、包含單個數值的數組

4. isNaN() 的作用

根據isNaN()方法返回的是true還是false可以檢測參數是否可以像number那樣是可運算的,如果是不可運算的,則可賦予這個參數一個默認的值或者是其他合適的內容,就可以得到一個隱式轉換參數數值的函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM