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。