检查 JavaScript 变量是否为数字的几种方式
小职 2020-09-27 来源 : 阅读 720 评论 0

摘要:当我们打算对数字进行操作时,如果对字符串或数组进行操作会带来奇怪的结果,本篇介绍了检查 JavaScript 变量是否为数字的几种方式,函数的应用希望对JavaScript 的学习有所帮助。

当我们打算对数字进行操作时,如果对字符串或数组进行操作会带来奇怪的结果,本篇介绍了检查 JavaScript 变量是否为数字的几种方式,函数的应用希望对JavaScript 的学习有所帮助。


检查 JavaScript 变量是否为数字的几种方式

介绍

 

JavaScript 是一种动态类型的语言,这意味着解释器是在运行时确定变量类型的。这允许我们可以用同一变量中存储不同类型的数据。但是如果没有文档和保持一致性,在使用代码时,我们很有可能并不知道变量究竟是哪种类型。

 

 

 

当我们打算对数字进行操作时,如果对字符串或数组进行操作会带来奇怪的结果。在本文中,我们将研究可以帮我们确定所用的变量是否为数字的各种函数。

 

字符串形式的数字例如 "100" 不应该被处理,同时在 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 nullnullVar = null;

let undefinedundefinedVar = 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() 函数能否只过滤数字:

 

> !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() 方法能够处理特殊数字,并且最适合我们的要求。



关注“职坐标在线”公众号,免费获取最新技术干货教程资源哦!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程