js中isNaN和Number.isNaN的區別

isNaN測試

當咱們向isNaN傳遞一個參數,它的本意是經過Number()方法嘗試將這參數轉換成Number類型,若是成功返回false,若是失敗返回true。spa

因此isNaN只是判斷傳入的參數是否能轉換成數字,並非嚴格的判斷是否等於NaN。code

例子:blog

Number('測試') //輸出NaN

 由於沒有將「測試」成功轉換成Number類型,因此下面代碼輸出true字符串

console.log(isNaN('測試')) //true

 

Number.isNaNconsole

判斷傳入的參數是否嚴格的等於NaN(也就是 ===)。class

那通常在什麼狀況下會用到Number.isNaN呢?變量

當兩個變量進行運算時,咱們能夠使用Number.isNaN來判斷它的值是否爲NaN方法

console.log(Number.isNaN(1/'測試')); //輸出true

 

二者的區別類型轉換

Number.isNaN與isNaN最的區別是,Number.isNaN不存在類型轉換的行爲。

console.log(isNaN('測試')) //true
console.log(Number.isNaN('測試')) //false

上面代碼中,都是傳入字符串「測試」,但爲何結果不一樣?緣由在於:

isNaN會經過Number方法,試圖將字符串"測試"轉換成Number類型,但轉換失敗了,由於 Number('測試') 的結果爲NaN ,因此最後返回true。

而Number.isNaN方法,只是嚴格的判斷傳入的參數是否全等於NaN( '測試' === NaN) ,字符串固然不全等於NaN啦,因此輸出false。

相關文章
相關標籤/搜索