js判斷是否是數字——isNaN()函式

NO IMAGE

今天使用isNaN()函式判斷是否是數字時遇到的問題,當變數是空串時,isNaN()的返回值還是false,但空串卻不是資料,查了一下,才知道原來isNaN()把空串或空格作0處理的。

isNaN  返回一個 Boolean 值,指明提供的值是否是保留值 NaN (不是數字)。

  NaN 即 Not a Number
  isNaN(numValue)

  必選項 numvalue 引數為要檢查是否為 NAN 的值。

  說明
  假如值是 NaN, 那麼 isNaN 函式返回 true ,否則返回 false 。 使用這個函式的典型情況是檢查 parseInt 和 parseFloat 方法的輸入值。

  還有一種辦法,變數可以與它自身進行比較。 假如比較的結果不等,那麼它就是 NaN 。 這是因為 NaN 是唯一與自身不等的值。
  isNaN函式用法示例:比如我有一個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並沒有關係。

轉自http://hi.baidu.com/drtabc/item/6f57f495ba4491becc80e504