当前位置: 首页 > 科技观察

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

时间:2023-03-18 01:25:49 科技观察

介绍JavaScript是一种动态类型语言,这意味着解释器在运行时确定变量类型。这允许我们将不同类型的数据存储在同一个变量中。但是如果没有文档和一致性,我们在使用代码的时候可能不知道这个变量是什么类型。当我们打算对数字进行操作时,对字符串或数组进行操作会产生奇怪的结果。在本文中,我们将研究各种可以帮助我们确定我们使用的变量是否为数字的函数。“100”等字符串形式的数字不应该被处理,NaN、Infinity、-Infinity等特殊值在JavaScript中也是数字,但我们会忽略这些值。基于这些要求,最好使用Number对象的内置isFinite()函数。但有时我们也使用其他函数,如Number.isNaN()和typeof()等。首先创建一些测试变量:letintVar=2;letfloatVar=10.5;letstringVar='4';letnanVar=NaN;letinfinityVar=Infinity;letnullnullVar=null;letundefinedundefinedVar=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()函数标准数字对象有一个isNaN()方法。用于判断传入的参数值是否为NaN。由于我们要检查变量是否为数字,因此需要使用not运算符!在检查中。现在看看是否可以通过添加带NOT运算符的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种类型:undefinedbooleannumberstringbigintsymbolobjectnull(typeof()showsasobject)function(一种特殊类型的对象)要验证一个变量是一个数字,我们只需要检查返回的值是否typeof()是“数字”。让我们尝试测试变量:>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';falsetypeof()函数很多比Number.isNaN()更好。它正确地确定null和undefined不是数字。但它对NaN和Infinity返回true。虽然这在技术上是正确的,但NaN和Infinity是我们在大多数情况下忽略的特殊数值。总结本文研究了如何在JavaScript中检查变量是否为数字。Number.isNaN()函数仅在我们知道我们的变量是一个数字并且需要验证它是否为NaN时才适用。如果你的代码需要处理NaN、Infinity或-Infinity等数字,typeof()函数是合适的。Number.isFinite()方法能够处理特殊数字,最适合我们的要求。