JavaScript判斷一個變量是否為數字


JavaScript是一門動態類型的語言,解釋器在運行的時候才確定變量的類型。

在JavaScript中NaNInfinity-Infinity都是數字類型的。

根據這些要求,最好使用的函數是內置Number對象中的isFinite()函數或正則表達式。但是,大多人平常會使用其他函數,如Number.isNaN()typeof()函數。

#創建一些變量,下面我們分別用Number.isFinite()、Number.isNaN()、typeof()、正則去驗證;
let intVar = 2; let floVar = 2.1; let strVar = "2.1"; let nanVar = NaN; let infinityVar = Infinity; let nullVar = null; let undefinedVar = undefined;
let str = "";

使用Number.isFinite()函數名。

Number.isFinite()函數檢查變量是否為數字,還檢查其是否為有限值。 因此,對於NaNInfinity-Infinity的數字,它返回false

用上面定義的變量檢驗一下

> Number.isFinite(intVar);
true
> Number.isFinite(floVar);
true
> Number.isFinite(strVar);
false
> Number.isFinite(nanVar);
false
> Number.isFinite(infinityVar);
false
> Number.isFinite(nullVar);
false
> Number.isFinite(undefined);
false
> Number.isFinite(str);
false

使用Number.isNaN()方法。

> !Number.isNaN(intVar);
true
> !Number.isNaN(floatVar);
true
> !Number.isNaN(stringVar);
true # Wrong
> !Number.isNaN(nanVar);
false
> !Number.isNaN(infinityVar);
true # Wrong
> !Number.isNaN(nullVar);
true # Wrong
> !Number.isNaN(undefinedVar);
true # Wrong
> !Number.isNaN(str);
true # Wrong

使用typeof()

> typeof(intVar) == 'number';
true
> typeof(floatVar) == 'number';
true
> typeof(stringVar) == 'number';
false
> typeof(nanVar) == 'number';
true # Wrong
> typeof(infinityVar) == 'number';
true # Wrong
> typeof(nullVar) == 'number';
false
> typeof(undefined) == 'number';
false
> typeof(str) == 'number';
false
 

使用正則表達式

let reg = /^(-)?[0-9]+.?[0-9]*$/;

reg.test(intVar);
true
reg.test(floVar);
true
reg.test(strVar);
true
reg.test(nanVar);
false
reg.test(nullVar);
false
reg.test(undefinedVar);
false
reg.test(str)
false

總結

在本文中,我們學習了如何檢查JavaScript中的變量是否為數字。 Number.isNaN()函數僅在我們知道變量為數字並且需要驗證它是否為NaN`時才適用。

如果代碼中有NaNInfinity-Infinity以及其他數字,則 typeof()`函數適用。

Number.isFinite()方法捕獲所有有限數,是最適合我們的要求。

正則在不區分數字或字符串時表現也不錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM