相信有學過JavaScript的同學都對isNaN不會陌生,它的作用是判斷當前值是否能轉換為數字的重要工具。
在介紹isNaN函式前,我們先來說說NaN。
NaN
NaN(not a number)是Number的一個特殊數值。對它的定義其實非常奇怪,非數值,一個不是數字的數值。這個數值用來表示本來用來返回數字的操作未返回數字的情況。
NaN有這樣的特點:
- 所有數值型別
除以/減去/乘以
非數值型別,都返回NaN。 - NaN不等於任何值,包括自身。(NaN != NaN)
注:Boolean和Null能轉換成Number型別,所以能正確返回數字。
isNaN()
isNaN()接收一個引數,這個引數可以是任意型別。如果這個引數可以被轉換為Number型別,則返回false
,否則返回true
。
- isNaN()的引數會被嘗試轉換為Number型別。
- 如果引數為
[]
、``
、true
、false
、null
會被轉換為數字,結果返回false。
注:當傳入的引數為一個物件時,isNaN()會嘗試呼叫valueOf()方法,來判斷是否可以轉換為數值,如果不能,還會再呼叫toString()方法,來繼續判斷是否可以轉換為數值。