JavaScript 中如何判断变量是否为数字

做者: Marcus Sanatan
译者:前端小智
来源:stackabuse

104程序狂欢节,前端开发工程师必读书籍有哪些值得推荐?javascript

点赞再看,微信搜索 【大迁世界】 关注这个没有大厂背景,但有着一股向上积极心态人。本文 GitHub https://github.com/qq44924588... 上已经收录,文章的已分类,也整理了不少个人文档,和教程资料。

你们都说简历没项目写,我就帮你们找了一个项目,还附赠【搭建教程】html

简介

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

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

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

根据这些要求,最好使用的函数是内置Number对象中的isFinite()函数。可是,开发人员一般会使用其余函数,如Number.isNaN()typeof()函数。github

咱们先建立一些变量:面试

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数组

咱们用上面定义的变量来检验一下:微信

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

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

总结

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

若是代码中有NaNInfinity-Infinity以及其余数字,则 typeof()`函数适用。

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


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

原文:https://stackabuse.com/javasc...

交流

文章每周持续更新,能够微信搜索「 大迁世界 」第一时间阅读和催更(比博客早一到两篇哟),本文 GitHub https://github.com/qq449245884/xiaozhi 已经收录,整理了不少个人文档,欢迎Star和完善,你们面试能够参照考点复习,另外关注公众号,后台回复福利,便可看到福利,你懂的。

相关文章
相关标签/搜索