在JavaScript中,typeof()函数的错误

24 浏览
0 Comments

在JavaScript中,typeof()函数的错误

可能重复:

在JavaScript中有没有一种(内置的)方法可以检查字符串是否是有效的数字?

我在HTML中有一个输入搜索栏

这是Javascript函数

function result() {     
    search($('#searchKey').val());    
    if(typeof(searchKey)=="number") { // 检查是否为数字
       someFunction();
    }
};

问题是,对于搜索栏中的每个条目,我都得到一个字符串的值,即使它是“hello”或9789。我使用alert(typeof(searchKey));进行验证,它总是返回字符串类型

我正在尝试区分搜索栏中的数字和字符串,我确信有更好的方法来做到这一点,但我不确定为什么这样做不起作用

我不能使用parseInt(),因为我需要动态区分文本和数字。

0
0 Comments

在JavaScript中,typeof()函数用于确定一个值的数据类型。然而,在使用typeof()函数时,有时会出现错误。本文将探讨typeof()函数错误出现的原因以及解决方法。

当我们使用typeof()函数时,它返回一个字符串,表示给定值的数据类型。然而,当我们对文本输入字段进行typeof()检查时,它总是返回"string",即使输入字段中的值是数字。这是因为文本输入字段始终包含一个字符串值。

那么,如果我们想要测试输入字段的值是否为数字,应该怎么办呢?我们可以使用以下代码进行检查:if (!isNaN(searchKey))。这里,isNaN()函数用于检查给定值是否为NaN(非数字)。如果输入字段的值是数字,那么!isNaN(searchKey)将返回true,否则返回false。通过这种方式,我们可以测试输入字段的值是否为数字。

另一种方法是使用正则表达式。正则表达式是一种强大的模式匹配工具,可以用于验证字符串是否匹配特定模式。在这种情况下,我们可以使用正则表达式/^\d+$/.test(searchKey)来检查输入字段的值是否为数字。这个正则表达式的含义是:以数字开头,以数字结尾,并且只包含数字字符。如果输入字段的值符合这个模式,.test()函数将返回true,否则返回false。

当我们在JavaScript中遇到(typeof() function errors)问题时,我们可以通过使用if (!isNaN(searchKey))或正则表达式/^\d+$/.test(searchKey)来解决。这样,我们就可以正确地测试输入字段的值是否为数字。

0
0 Comments

typeof() function errors in javascript

在JavaScript中,当我们想要检查一个变量的类型时,通常会使用typeof()函数。然而,有时候使用typeof()函数会导致一些错误。本文将介绍这些错误出现的原因以及解决方法。

问题的原因:

在JavaScript中,typeof()函数可以用来判断一个变量的类型。然而,当使用typeof()函数来判断一个变量是否为数字时,可能会出现错误。具体来说,当我们使用`typeof(searchKey)=="number"`来检查searchKey是否为数字时,可能会得到错误的结果。

解决方法:

为了避免typeof()函数在判断数字类型时出现的错误,我们可以使用isNaN()函数来替代。isNaN()函数用于检查一个值是否是NaN(非数字)。通过使用isNaN()函数,我们可以更准确地判断一个变量是否为数字。

示例代码:

if(!isNaN(searchKey)){
  // 执行数字类型的逻辑
} else {
  // 执行非数字类型的逻辑
}

使用上述代码,我们可以通过检查searchKey是否为NaN来判断它是否为数字类型。如果searchKey是数字,那么!isNaN(searchKey)将返回true,我们可以执行数字类型的逻辑。如果searchKey不是数字,!isNaN(searchKey)将返回false,我们可以执行非数字类型的逻辑。

在JavaScript中,使用typeof()函数来判断一个变量的类型是常见的做法。然而,在判断一个变量是否为数字时,typeof()函数可能会出现错误。为了避免这个问题,我们可以使用isNaN()函数来替代typeof()函数。通过使用isNaN()函数,我们可以更准确地判断一个变量是否为数字类型。希望本文能帮助你更好地处理JavaScript中的类型判断问题。

0
0 Comments

在JavaScript中,typeof()函数在处理某些情况下会出现错误。这个问题的出现原因是由于元素的值始终是一个字符串。但是,你可以通过使用parseInt来将其解析为数字。如果无法从字符串中解析出数字,则会得到NaN。但是要注意,你必须使用isNaN来判断,因为myNumber === NaN不是有效的操作。

更好的方法是使用isNaN(+searchKey),因为一元操作符将调用ToNumber函数。但是,这将忽略空格。

根据ECMAScript规范中的9.3.1节和11.4.6节,ToNumber函数应用于字符串类型时,如果无法将字符串解释为StringNumericLiteral,结果将为NaN。一元+操作符将其操作数转换为数字类型。

有时无法正常工作,比如"123dwabc"。你可以使用parseInt(val).toString() == val来确保两个值相同,或者使用正则表达式。

我认为可以使用parseFloat来代替parseInt 🙂

0