2011-12-15 49 views
0

我正在尋找最終的最佳方式來檢查,如果var是數我找不到工作isInt像我想要

function isInt(n){ 
    return !isNaN(parseInt(n * 1)); 
} 

alert(isInt(""));//true 

這個網站騙了我http://www.inventpartners.com/content/javascript_is_int

和第二在雁https://stackoverflow.com/a/3886106/908879的傢伙的評論嚇得我夠不使用他的回答

請幫我找到正確的一個plxplx

+0

你想知道它是一個整數,任何數字還是`Number`類型? – alex 2011-12-15 07:29:45

回答

3

以下可能是您的問題的一個很好的解決方案。然而,這是否是一個浮點返回false數

function isInt(n){ 
    return !isNaN(parseFloat(n)) && isFinite(n) && (n % 1 == 0); 
}; 

如果你想知道這是否是在一般的一些最好的解決辦法是

function isNumber(n){ 
    return !isNaN(parseFloat(n)) && isFinite(n); 
}; 

參見:http://dl.dropbox.com/u/35146/js/tests/isNumber.html

0

如果你只想知道n是一個數字,你可以使用:

function isNumber(n){ 
    return typeof n == 'number'; 
} 
alert(isNumber(""));//false 
0

你可能需要做更多的檢查:

function isInt(n){ 
n = Number(n); 
return String(n).length 
     && !isNaN(parseInt(n,10)) 
     && n%1 === 0; 
} 
0

如果你想要速度,有更快的運行解決方案。

function isInt(v) { return v === ~~v; } 
function isNumber(v) { return v === +v; } 
function isNumeric(v) { return v === +v || v === +v + ''; } 
function isIntLike(v) { return v === ~~v || v === ~~v + ''; } 

所有相關的檢查都可以定義爲沒有函數調用。

請注意NaN !== NaN,所以沒有isNaN調用是必需的。

相關問題