做者:Marcus Sanatan翻译:疯狂的技术宅javascript
原文:https://stackabuse.com/javasc...前端
未经容许严禁转载java
JavaScript 是一种动态类型的语言,这意味着解释器是在运行时肯定变量类型的。这容许咱们能够用同一变量中存储不一样类型的数据。可是若是没有文档和保持一致性,在使用代码时,咱们颇有可能并不知道变量到底是哪一种类型。程序员
当咱们打算对数字进行操做时,若是对字符串或数组进行操做会带来奇怪的结果。在本文中,咱们将研究能够帮咱们肯定所用的变量是否为数字的各类函数。面试
字符串形式的数字例如 "100"
不该该被处理,同时在 JavaScript中 NaN
,Infinity
和 -Infinity
之类的特殊值也都是数字,不过咱们将忽略这些值。segmentfault
根据这些要求,最好使用 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()
用来函数检查变量是否为数字,但也用来检查其是否为某些特殊值。它在遇到 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()
方法。用来判断传入的参数值是否为 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()
函数是一个全局函数,它的参数能够接受变量或值,并返回其类型的字符串表示形式。 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()
方法可以处理特殊数字,而且最适合咱们的要求。