javascript如何判斷一個變數是否是整數

螞蟻小編發表於2017-03-25

本章節介紹一下如何判斷一個變數是否是數字,這在實際應用中有著比較實際的用處。實現的方法有很多,這裡就給出比較常見的兩種,希望有需要的朋友可以做一下借鑑,直接看程式碼。

程式碼例項:

例項一:

[JavaScript] 純文字檢視 複製程式碼
var a="12";
var b=12;
function done(num) {
  return (typeof num === 'number') && (num % 1 === 0);
}
console.log(done(a));
console.log(done(b));

返回值是true,則說明引數是整數,如果返回值是false,則說明引數不是整數,下面介紹一下它的原理。

typeof num === 'number'可以判斷是否是數值型別,如果不是,則直接返回false,但是這還不夠,因為還存在著浮點數的可能,num % 1 === 0這個求餘運算,只有整數和1求餘返回值是0。

例項二:

[JavaScript] 純文字檢視 複製程式碼
var a="12";
var b=12;
function done(num) {
  return Math.round(num) === num;
}
console.log(done(a));
console.log(done(b));

上面的程式碼也可以完美的實現我們的要求,也非常的巧妙,Math.round()函式可以將數字轉換為整數,對於數字字串也是如此,經過轉換之後如果還和最初傳遞的值相同,那麼就可以說明它是整數。

最後完善:

上面的程式碼還是有一個缺陷,如果引數傳遞的是一個Number物件的話,就不能進行正確判斷了,下面對程式碼進行一下改善。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var a="12";
var b=12;
var obj=new Number(13);
function done(num){
  if(Object.prototype.toString.call(num).slice(8,-1)=="Number"){
    if(num.toString()%1===0){
      return true;
    }
  }
  return false;
}
console.log(done(a));
console.log(done(b));
console.log(done(obj));

上面的程式碼可以實現比較完美的判斷數字直接量還是數字物件的效果。

相關文章