JavaScript:檢查變量是否為數字
簡介
JavaScript 是一種動態類型語言,這意味著解釋器在運行時確定變量的類型。在實踐中,這允許我們使用相同的變量在相同的代碼中存儲不同類型的數據。這也意味著,如果沒有文檔和一致性,我們在使用時並不總是知道代碼中變量的類型。
當我們期望一個數字時對字符串或數組進行操作會在我們的代碼中帶來奇怪的結果。在本文中,我們將了解各種有助於確定我們使用的變量是否為數字的函數。
不應接受包含諸如“10”之類的數字的字符串。在 JavaScript 中,像 NaN
這樣的特殊值 , Infinity
和 -Infinity
也是數字 - 不過,我們將忽略這些值。
有了這些要求,最好使用的函數是 isFinite()
內置 Number
的函數 對象。
但是,開發人員通常為此使用其他函數,特別是 Number.isNaN()
和 typeof()
功能。
讓我們創建一些變量進行測試:
let intVar = 2;
let floatVar = 10.5;
let stringVar = '4';
let nanVar = NaN;
let infinityVar = Infinity;
let nullVar = null;
let undefinedVar = undefined;
使用Number.isFinite() 功能
Number.isFinite()
函數檢查變量是否為數字,但也檢查它是否為有限值。因此,它返回 false
在 NaN
的數字上 , Infinity
或 -Infinity
.
讓我們在上面定義的變量上測試一下:
> Number.isFinite(intVar);
true
> Number.isFinite(floatVar);
true
> Number.isFinite(stringVar);
false
> Number.isFinite(nanVar);
false
> Number.isFinite(infinityVar);
false
> Number.isFinite(nullVar);
false
> Number.isFinite(undefined);
false
這正是我們想要的。忽略特殊的非有限數字,以及任何不是數字類型的變量。
如果您想檢查變量是否為數字,最好的辦法是使用 Number.isFinite()
功能。
使用Number.isNaN() 功能
標準 Number
對像有一個 isNaN()
方法。它接受一個參數,並確定其值是否為 NaN
.由於我們要檢查變量是否為數字,我們將使用 not 運算符,!
, 在我們的檢查中。
現在讓我們檢查 not 運算符和 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
此方法相當寬鬆,因為它接受根本不是數字的值。此方法最適合當您知道自己有一個號碼並想檢查它是否是 NaN
時 值,不適用於一般的數字檢查。
使用typeof() 功能
typeof()
function 是一個全局函數,它接受變量或值作為參數並返回其類型的字符串表示形式。 JavaScript 共有 9 種類型:
undefined
boolean
number
string
bigint
symbol
object
null
(typeof()
顯示為對象)function
(一種特殊的物體)
要驗證變量是否為數字,我們只需檢查 typeof()
返回的值是否 是 "number"
.讓我們在測試變量上嘗試一下:
免費電子書:Git Essentials
查看我們的 Git 學習實踐指南,其中包含最佳實踐、行業認可的標準以及隨附的備忘單。停止谷歌搜索 Git 命令並真正學習 它!
> 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()
函數性能比 Number.isNaN()
好很多 .它正確地確定了一個字符串變量 null
和 undefined
不是數字。但是,它為 NaN
返回 true 和 Infinity
.
雖然這是技術上正確的結果,但 NaN
和 Infinity
是特殊的數值,對於大多數用例我們寧願忽略它們。
結論
在本文中,我們學習瞭如何檢查 JavaScript 中的變量是否為數字。 Number.isNaN()
函數只有在我們知道我們的變量是一個數字並且需要驗證它是否具體 NaN
時才適用 或其他。
typeof()
如果您的代碼可以與 NaN
一起使用,則該函數是合適的 , Infinity
或 -Infinity
以及其他數字。
Number.isFinite()
方法捕獲所有有限數,最適合我們的要求。