检查 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() 方法可以处理特殊数字,而且最适合咱们的要求。
相关文章
相关标签/搜索