我使用isNan functionto檢查,如果輸入的值是一個數字:的JavaScript isNaN功能
if(isNaN(num)) {
alert('I am not a number');
}
else {
//
}
然而,如果輸入的數值,例如,「5748hh」這是可以理解像數,並返回false
。哪裏不對?
我使用isNan functionto檢查,如果輸入的值是一個數字:的JavaScript isNaN功能
if(isNaN(num)) {
alert('I am not a number');
}
else {
//
}
然而,如果輸入的數值,例如,「5748hh」這是可以理解像數,並返回false
。哪裏不對?
Mozilla的MDN
當參數傳遞給isNaN功能不是數字,其值將首先強制轉換爲一個數字。然後測試結果值以確定它是否爲NaN。因此,對於非數字,強制爲數字類型時會生成有效的非NaN數值(特別是空字符串和布爾基元,當強制數字值爲零或一時),「假」返回值可能是意外的;例如,空字符串肯定「不是數字」。這種混淆源於這個術語「不是數字」,對於表示爲IEEE-794浮點值的數字具有特定的含義。這個函數應該被解釋爲回答這個問題,「當這個值被強制爲一個數值時,這個值是IEEE-794'非數字'的值嗎?」
因此alert(isNaN('45345ll'))
返回true,因爲它的值強制不同於parseInt/parseFloat
轉換。
例如,
var num = false;
console.log(isNaN(num)); /* return false because the coerced value is 0 but */
console.log(parseInt(num, 10)); /* return isNaN */
也許你得到意想不到的值,由於在if
聲明中缺少括號
您必須首先嚐試解析它:
if(isNaN(parseInt(num, 10))) {
由於isNaN功能規範的最早的版本,其非數值參數的行爲已混亂。 當isNaN函數的參數不是數字時,該值首先被強制爲。然後測試結果值以確定它是否爲NaN。因此,對於非數字的是,當在一個有效的非NaN的數值(特別是空字符串和布爾基元,其中,當威嚇給數值零或一)
強制轉換成數字類型的結果不同於parseInt()
此裹挾將導致非數字字符串,如5748hh
,因此您看到的行爲。
isNaN("5748hh");
返回true
。
在我的螢火蟲:
>>> isNaN("5748hh")
true
isNaN =不是一個數字,所以如果它返回true,輸入的數據不是數字。
if(isNaN("5748hh"))
{
alert("not a number");
}
else
{
alert("a number");
}
返回true: 「不是一個數字」,它應該像。
NaN是一個特殊的數字。 isNaN(參數)函數檢查參數是否爲NaN值,但如果參數是一個字符串,則該參數也爲真,表示有效整數。
你需要在這個例子中正確關閉你的括號:)你在num之後缺少一個關閉)。 – Eirinn
'isNaN(「5748hh」)=== true;'什麼不工作? – Raynos