JavaScript 中判断变量是否为数字


本文摘自PHP中文网,作者coldplay.xixi,侵删。

今天JavaScript栏目如何判断变量是否为数字。

大家都说简历没项目写,我就帮大家找了一个项目。

简介

JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。如果没有文档和一致性,我们在使用代码时并不总是知道变量的类型。

当我们期望一个变量是数字时,对字符串或数组进行操作可能会在代码中导致奇怪的结果。在本文中,我们将会介绍一些判断变量是否为数字的函数。

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

根据这些要求,最好使用的函数是内置Number对象中的isFinite()函数。但是,开发人员通常会使用其他函数,如Number.isNaN()typeof()函数。

我们先创建一些变量:

1

2

3

4

5

6

7

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()函数检查变量是否为数字,还检查其是否为有限值。 因此,对于NaNInfinity-Infinity的数字,它返回false

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

> !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"。 让我们尝试一下测试变量:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

> 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()要好得多。它正确地确定了字符串变量nullundefined不是数字。但是,对于NaNInfinity,它返回true

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

总结

在本文中,我们学习了如何检查JavaScript中的变量是否为数字。 Number.isNaN()函数仅在我们知道变量为数字并且需要验证它是否为NaN`时才适用。

如果代码中有NaNInfinity-Infinity以及其他数字,则 typeof()`函数适用。

Number.isFinite()方法捕获所有有限数,是最适合我们的要求。


代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

相关免费学习推荐:javascript(视频)

以上就是JavaScript 中判断变量是否为数字的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

除了 async 速度翻 10 倍,javascript 还带来了什么?

javascript怎么让数组倒序

javascript有split函数吗

javascript如何实现定时跳转页面

javascript由什么解析

javascript中object方法有哪些

javascript如何设置滚动条位置

javascript怎么实现浮动窗口

javascript 没有类吗

javascript中宿主对象和原生对象的区别是什么

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...