Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String JS-字符串和int变量之间的混淆_String_Variables_Int - Fatal编程技术网

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

String JS-字符串和int变量之间的混淆,string,variables,int,String,Variables,Int,Javascript真的让我头疼。起初我使用的代码是: var val = document.getElementById("inputField").value; // User entered "2" while (val < 5) { val += 1 alert(val); } var val=document.getElementById(“inputField”).value;//用户输入“2” while(val

Javascript真的让我头疼。起初我使用的代码是:

var val = document.getElementById("inputField").value; // User entered "2"
while (val < 5)
{
    val += 1
    alert(val);
}
var val=document.getElementById(“inputField”).value;//用户输入“2”
while(val<5)
{
val+=1
警报(val);
}
但是它会做5+1=51,除非我在进入while循环之前使用parseInt。这意味着val不是一个数字。但是,在表达式(val<5)中,当进入while循环时,将val视为一个数字是没有问题的。 为什么会这样?这在我看来是不合逻辑的,除非你告诉我“事情就是这样”。
Ty

在编程界很明显,
var x=5
不同于
var x=“5”
前者将5理解为一个数字,而后者将5理解为一个字符或一个字符的字符串

这里的问题来自两个方面

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

第二名: “+”运算符同时接受数字和文本操作数。其中
5+1
结果为6。而
“5”+“1”
的结果是“51”。 另外,
“5”+1
会导致
“51”

所以,javascript认为输入的值是一个有效的文本和数字,加上这两种类型的操作,所以,它将其作为文本处理,因为没有其他符号指示它是一个数字

如果将“+”替换为不接受文本作为操作数的“*”,将得到预期结果,其中
“5”*5=25

在这里,jS尝试将乘法作为一个数字应用于文本,但成功了
但是如果文本不是帕萨普式的数字。说“x”,然后
“x”*5
将产生
NaN

我建议您使用jquery。。。。