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
答案 0 :(得分:0)
在编程世界中很明显var x = 5
与var 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