1. 程式人生 > >Javascript中的isNaN函式的介紹與使用

Javascript中的isNaN函式的介紹與使用

NaN "not a number",出現這個數值比較少見,以至於我們可以不用理它。當運算無法返回正確數值時,就會返回"NaN"值。NaN值非常特殊,因為它“不是數字”,所以任何數跟它都不相等,甚至NaN本身也不等於NaN。

isNaN(numValue), 計算一個引數,檢查它是否為數值。numvalue就是你要測試的值。

示例1:

檢查是否非法:

<script>

document.write(isNaN(123));

document.write(isNaN(-1.23));

document.write(isNaN(5-2));

document.write(isNaN(0));

document.write(isNaN("hello"));

document.write(isNaN("2005/12/12"));

</script>

輸出:

false

false

false

false

true

true

示例2:

下面的例子計算floatValue,確定它是否為數值,以便呼叫相應的過程:

floatValue=parseFloat(toFloat)//如果toFloat為非數值,那麼parseFloat運算後的值為NaN,即floatValue=NaN;

if(isNaN(floatValue)){

notFloat()

}else{

ifFloat()

}

示例3:

比如有個textbox用於錄入數字型的資料,在提交表單的時候要驗證textbox中的值是否為資料,那麼我們可以試用isNaN函式。

function checkValue()

{

if(isNaN(document.all.textbox.value))

{

alert("請用數字錄入!");

return false;

}

}

isNaN的典型使用時為parseInt和parseFloat方法的輸入值進行一個提前的檢驗,但這種簡單結果並不好。雖然可能有一些教科書上頁這麼說,甚至於錯誤地認為其實一個檢查parseInt和parseFloat的返回值,這樣是錯誤的。

parseInt與parseFloat是將一個字元型數字進行一個轉化。但自身還有錯誤處理的,如果你的輸入值不是一個數字時,則parseInt和parseFloat返回一個訊息:“is not number”,但一般的情況下我們都是對一個數字樣式的字串進行轉換的,誰會無聊到轉化非數字型的呢?所以你輸入的引數是否合格,可以先進行一次isNaN檢查的。 

但如果我們有意識的以下行為,事先是不能用isNaN進行檢查的,數字開頭中間含有字母時,如果用isNaN進行檢查是通不過的。

如果是一個空串或是一個空格,而isNaN是做為數字0進行處理的,而parseInt與parseFloat是返回一個錯誤訊息,這個isNaN檢查不嚴密而導致的。 
兩個函式是獨立的,並不會誰為誰而生存,isNaN與parseInt/parseFloat並沒有關係。