小编给大家分享一下JavaScript中如何判断变量是否为数字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
JavaScript是一种动态类型语言,这意味着解释器在运行时<强>确定变量的类型>强。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。如果没有文档和一致性,我们在使用代码时并不总是知道变量的类型。
当我们期望一个变量是数字时,对字符串或数组进行操作可能会在代码中导致奇怪的结果。在本文中,我们将会介绍一些判断变量是否为数字的函数。
像<代码>“10“> 代码之类的数字的字符串不应被接受。在JavaScript中,诸如<代码>南> 代码,无限<代码> 代码>和<代码>无穷代码>之类的特殊值也是数字类型的。
根据这些要求,最好使用的函数是内置数<代码> 代码>对象中的<代码> isFinite() 代码>函数。但是,开发人员通常会使用其他函数,如<代码> Number.isNaN() 代码>和<代码> typeof() 代码>函数。
我们先创建一些变量:
让intVar=2; 让floatVar=10.5; 让stringVar=& # 39; 4 & # 39;; 让nanVar=南; 让infinityVar=无穷大; 让nullVar=零; 让undefinedVar=定义;
<代码> Number.isFinite() 代码>函数检查变量是否为数字,还检查其是否为<强>有限值>强。因此,对于<代码>南> 代码,无限<代码> 代码>或<代码>无穷> 代码的数字,它返回<代码>假代码>。
我们用上面定义的变量来检验一下:
在Number.isFinite (intVar); 真正的 比;Number.isFinite (floatVar); 真正的 比;Number.isFinite (stringVar); 假 比;Number.isFinite (nanVar); 假 比;Number.isFinite (infinityVar); 假 比;Number.isFinite (nullVar); 假 比;Number.isFinite(定义); 假
这正是我们想要的。特殊的非有限数以及非数字类型的任何变量都会被忽略,所以,如果你想检查一个变量是否是一个数字,最好的方法是使用<代码> Number.isFinite() 代码>函数。
标准<代码> 代码>数量对象有一个<代码> isNaN() 代码>方法。它接受一个参数,并确定其值是否为<代码>南> 代码。因为我们想检查一个变量是否是一个数字,所以我们将在检查中使用非操作符<代码> !代码> .
在! Number.isNaN (intVar); 真正的 比;! Number.isNaN (floatVar); 真正的 比;! Number.isNaN (stringVar); 真正的错# 比;! Number.isNaN (nanVar); 假 比;! Number.isNaN (infinityVar); 真正的错# 比;! Number.isNaN (nullVar); 真正的错# 比;! Number.isNaN (undefinedVar); 真正的错#
这个方法是相当宽松的,因为它接受根本不是数字的值。这种方法最适合于当你知道你有一个数字并且要检查它是否是一个<代码>南> 代码值时,而不是一般的数字检查。
<代码> typeof() 代码>函数是一个全局函数,它接受变量或值作为参数,并返回其类型的字符串表示.JavaScript总共有<代码> 代码> 9种类型
- <李>定义李> <李>布尔李> <李> 李> <李>字符串数量李> <李> bigint李> <李>符号李> <李> 李> <李>对象零(typeof()显示的是<代码>对象> 代码)李> <李>函数(一种特殊类型的对象)李>
为了验证变量是否为数字,我们只需要检查<代码> typeof() 代码>返回的值是否”为“number"。让我们尝试一下测试变量:
在typeof (intVar)==& # 39;数字# 39;; 真正的 比;typeof (floatVar)==& # 39;数字# 39;; 真正的 比;typeof (stringVar)==& # 39;数字# 39;; 假 比;typeof (nanVar)==& # 39;数字# 39;; 真正的错# 比;typeof (infinityVar)==& # 39;数字# 39;; 真正的错# 比;typeof (nullVar)==& # 39;数字# 39;; 假 比;typeof(定义)==& # 39;数字# 39;; 假
<代码> typeof() 代码>函数的性能比<代码> Number.isNaN() 代码>要好得多。它正确地确定了字符串变量<代码>空代码>和<代码>定义> 代码不是数字。但是,对于<代码>南代码>和<代码>无穷> 代码,它返回<代码> 代码>。
尽管从技术上来说这是正确的结果,但<代码>南> 代码和无限<代码> 代码>是特殊的数字值,对于大多数使用情况,我们宁愿忽略它们。
<强> 强>