为什么javascript将typeof显示为"字符串“;当它是一个数字时

Why is javascript showing typeof as "string" when its a number?

本文关键字:数字 一个 typeof javascript 显示 字符串 quot 为什么      更新时间:2023-09-26

我正在尝试预处理一些表单验证,由于某种原因,当我在输入字段上输入一个数字时,它会将typeof显示为字符串。

我真的无法理解这件事。我试过在网上搜索,但找不到答案。

如有任何帮助,我们将不胜感激。下面是我的代码jsfiddle示例的链接。

提前感谢

https://jsfiddle.net/eldan88/2xb47g78/

<button>Check if number</button>
<input id="number" type="number">
<script>
$("button").click(function () {
    var number = $("#number").val();
    alert(typeof (number));
    if(typeof number !== "number"){
        alert("not a number");
    }


});

</script>

这是因为输入的值始终是字符串。例如,当我输入3时,实际值不是数字3,而是字符串"3"。要检查它是否不是数字,请使用isNaN(),一个Javascript本机函数来检查某个东西是否不是数字。例如,当您运行isNaN("3")时,它将返回false,因为3是一个数字。

输入元素的value属性总是存储为字符串,因此typeof总是返回"string"。

https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement

您需要编写自己的自定义函数来确定输入的类型。

具有值为"number"的type属性的输入元素表示用于将元素值设置为表示数字的字符串的精确控件。

http://www.w3.org/TR/html-markup/input.number.html

所以不管怎样,输入都包含一个字符串。

w3.org上的此处。it adivses:-

=浮点数#

表示数字的字符串。

正如其他人所说,HTML输入元素总是将其值存储为字符串,即使这些值是"数字字符串"

$("button").click(function () {
    var number = $("#number").val();
    alert(Number(number));
    if(isNaN(Number(number))){
        alert("not a number");
    }
});

var myVar=5
alert(typeof myVar) //Number
var myVar = "5"
alert(typeof myVar) //String
var myVar = "5"
var vResult = parseInt(myVar);
alert(typeof vResult) //Number

在您的情况下,从文本框返回的是.val(),它始终是一个字符串。

相关文章: