檢查 JavaScript 變量是否爲數字的幾種方式

檢查 JavaScript 變量是否爲數字的幾種方式

前端小混混 前端先鋒 前端

檢查 JavaScript 變量是否爲數字的幾種方式

介紹


JavaScript 是一種動態類型的語言,這意味着解釋器是在運行時肯定變量類型的。這容許咱們能夠用同一變量中存儲不一樣類型的數據。可是若是沒有文檔和保持一致性,在使用代碼時,咱們頗有可能並不知道變量到底是哪一種類型。數組

當咱們打算對數字進行操做時,若是對字符串或數組進行操做會帶來奇怪的結果。在本文中,咱們將研究能夠幫咱們肯定所用的變量是否爲數字的各類函數。ide

字符串形式的數字例如 "100" 不該該被處理,同時在 JavaScript中 NaN,Infinity 和 -Infinity 之類的特殊值也都是數字,不過咱們將忽略這些值。函數

根據這些要求,最好使用 Number 對象內置 isFinite() 函數。可是有時候咱們也會使用其餘函數,例如 Number.isNaN() 和 typeof() 等。測試

首先建立一些測試變量:code

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() 用來函數檢查變量是否爲數字,但也用來檢查其是否爲某些特殊值。它在遇到 NaN, Infinity 或者 -Infinity 時會返回 false。對象

接下來在上面定義的變量上進行測試:blog

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);
falseip

結果使人滿意。特殊的數字值以及全部非數字類型的變量都將會被忽略。若是想要檢查某個變量是否爲數字, Number.isFinite() 函數是最好的選擇。文檔

使用Number.isNaN()函數


標準的 Number 對象具備 isNaN() 方法。用來判斷傳入的參數值是否爲 NaN。因爲咱們要檢查變量是否爲數字,因此須要在檢查中要使用非運算符 !。

如今看看經過非運算符加 Number.isNaN() 函數可否只過濾數字:

!Number.isNaN(intVar);
true
!Number.isNaN(floatVar);
true
!Number.isNaN(stringVar);
true # 判斷錯誤
!Number.isNaN(nanVar);
false
!Number.isNaN(infinityVar);
true # 判斷錯誤
!Number.isNaN(nullVar);
true # 判斷錯誤
!Number.isNaN(undefinedVar);
true # 判斷錯誤

這種方法至關寬鬆,由於它接受的值根本不是數字。這種方法最適合在你知道本身的值是數字而且要檢查它是否爲 NaN 值的狀況下,並不適合常規數字的。

使用typeof()函數


typeof() 函數是一個全局函數,它的參數能夠接受變量或值,並返回其類型的字符串表示形式。JavaScript 共有 9 種類型:

  • undefined
  • boolean
  • number
  • string
  • bigint
  • symbol
  • object
  • null (typeof() 顯示爲對象)
  • function (對象的一種特殊類型)
    爲了驗證變量是否爲數字,咱們只須要檢查 typeof() 返回的值是否爲 "number"。讓咱們嘗試一下測試變量:

typeof(intVar) == 'number';
true
typeof(floatVar) == 'number';
true
typeof(stringVar) == 'number';
false
typeof(nanVar) == 'number';
true # 判斷錯誤
typeof(infinityVar) == 'number';
true # 判斷錯誤
typeof(nullVar) == 'number';
false
typeof(undefined) == 'number';
false

typeof() 函數比 Number.isNaN() 好得多。它能夠正確的判斷 null 和 undefined 不是數字。但若是是 NaN 和 Infinity,它會返回 true。

儘管從技術角度上來講這是正確的,但 NaN 和 Infinity 是特殊的數字值,咱們在大多數狀況下都會忽略它們。

總結


本文研究瞭如何檢查 JavaScript 中的變量是否爲數字。

  • 只有在咱們知道本身的變量是一個數字,而且須要驗證它是否爲 NaN 時,Number.isNaN() 函數才適用。

  • 若是你的代碼須要處理 NaN,Infinity 或 -Infinity 及其餘數字時,則 typeof() 函數是適用的。

  • Number.isFinite() 方法可以處理特殊數字,而且最適合咱們的要求。
相關文章
相關標籤/搜索