JS - 字符串和int变量之间的混淆

时间:2014-12-17 20:50:42

标签: string variables int

Javascript真的让我烦恼不已。起初我使用的是这段代码:

var val = document.getElementById("inputField").value; // User entered "2"
while (val < 5)
{
    val += 1
    alert(val);
}

但除非我在进入while循环之前使用parseInt,否则它会做5 + 1 = 51。这意味着val不是数字。但是,在表达式(val&lt; 5)中输入while循环时将val视为数字是没有问题的。 为什么会这样?这对我来说看起来不合逻辑,除非你告诉我&#34;它是这样的&#34;。 TY

1 个答案:

答案 0 :(得分:0)

在编程世界中很明显var x = 5var x = "5"不同 因为前者将5作为数字,而后者将5理解为一个字符或一个字符串

这里的问题来自两个来源

数字1: 是否从html控件输入获取数值,该输入在其value属性中接受文字文本(即使它的类型为数字)

数字2: 那是&#34; +&#34;运算符接受数字和文本操作数。其中5 + 1导致6. "5" + "1"导致&#34; 51&#34;。 另外"5"+1会产生"51"

因此,javascript看到输入的值是有效的文本和数字加上操作适用于这两种类型,因此,它将其作为文本处理,因为没有其他符号表明它是一个数字

如果您更换&#39; +&#39;用&#39; *&#39;它不接受文本作为操作数,您将获得"5" * 5 = 25

的预期结果

这里jS试图将文本上的乘法作为数字应用,并且它成功了 但是,如果文本不是作为数字解析。说&#34; x&#34;,然后"x" * 5会产生NaN