JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。今天分享判断变量是否为数字JavaScript教程。

像\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”10\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”之类的数字的字符串不应被接受。在JavaScript中,诸如NaN,Infinity和-Infinity之类的特殊值也是数字类型的。

根据这些要求,最好使用的函数是内置Number对象中的isFinite()函数。但是,开发人员通常会使用其他函数,如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()函数检查变量是否为数字,还检查其是否为有限值。因此,对于NaN,Infinity或-Infinity的数字,它返回false。

我们用上面定义的变量来检验一下:

> 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。因为我们想检查一个变量是否是一个数字,所以我们将在检查中使用非操作符!。

> !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()函数是一个全局函数,它接受变量或值作为参数,并返回其类型的字符串表示。JavaScript 总共有9种类型

undefined

boolean

number

string

bigint

symbol

object

null (typeof() 显示的是 object)

function (一种特殊类型的 object)

为了验证变量是否为数字,我们只需要检查typeof()返回的值是否为`\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”number\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\”。让我们尝试一下测试变量:

> 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和Infinity,它返回true。

尽管从技术上来说这是正确的结果,但NaN和Infinity是特殊的数字值,对于大多数使用情况,我们宁愿忽略它们。

相关新闻

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

151-1101-0018

在线咨询:
邮件:30115776@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部