Javascript 我很困惑为什么会这样?编号(i)和#x2B;数目(1);
我对字符串和数字加法感到非常困惑,正如您在这段代码中看到的,我不能添加“I” “1”作为一个数字,比如每当我尝试执行“document.getElementById(“demo”).innerHTML=text+=”Javascript 我很困惑为什么会这样?编号(i)和#x2B;数目(1);,javascript,Javascript,我对字符串和数字加法感到非常困惑,正如您在这段代码中看到的,我不能添加“I” “1”作为一个数字,比如每当我尝试执行“document.getElementById(“demo”).innerHTML=text+=”“+I+1;”我得到答案11,顺便说一句,“I”的值是1。我已经找到了一个解决办法,但问题是我也是一个数字,当然,这就是为什么我必须遵循一些奇怪的模式。有关更多信息,请阅读以下代码: function myFunction() { var text = &
“+I+1;”我得到答案11,顺便说一句,“I”的值是1。我已经找到了一个解决办法,但问题是我也是一个数字,当然,这就是为什么我必须遵循一些奇怪的模式。有关更多信息,请阅读以下代码:
function myFunction() {
var text = "";
var i;
Loop1:
for (i = 0; i < 10; i++) {
document.getElementById("demo").innerHTML = text += "<br>" + i + 1;
}
}
函数myFunction(){
var text=“”;
var i;
循环1:
对于(i=0;i<10;i++){
document.getElementById(“demo”).innerHTML=text+=“
”+i+1;
}
}
我不能这样写,因为计算机会把它写成字符串。因此,我找到的解决方案如下所示:
函数myFunction(){
var text=“”;
var i;
对于(i=0;i<10;i++){
document.getElementById(“demo”).innerHTML=text+=“
”+编号(i+1);
}
}
在您的第一个代码中,添加i的顺序将使其首先添加到字符串中,从而将其转换为字符串 “
”+i+1
当您使用Number()对其进行包装时,它将不再转换为字符串,因为它现在包装在函数调用中
所以基本上
“string”+2
会将其转换为字符串,然后添加到字符串中
第二个解决方案基本上是document.getElementById(“demo”).innerHTML=text++=“
”+(i+1)代码>
现在将首先计算i+1
,因为它由于分组运算符而具有更高的优先级(结果将是数字2
),然后计算“
”+2
顺便说一句,在循环的每次迭代中都不需要覆盖元素的内容。只需构建字符串并在循环后更新内容:
function myFunction() {
var text = "";
var i;
for (i = 0; i < 10; i++) {
text += "<br>" + (i + 1);
}
document.getElementById("demo").innerHTML = text;
}
函数myFunction(){
var text=“”;
var i;
对于(i=0;i<10;i++){
text+=“
”+(i+1);
}
document.getElementById(“demo”).innerHTML=text;
}
从左到右添加操作
例如:'+1+2
将是“12”
,因为1将首先添加到空字符串,然后2将添加到字符串“1”
。
第一步-“”+1=“1”
,第二步-“1”+2=“12”
但是如果你把“+(1+2)
括在括号中,它会像在数学中一样优先。
第一步-(1+2)=3
,第二步-3+“”=“3”
在您的情况下,Number()
可以做到这一点。无法将数字添加到字符串中的原因是,它只会将数字添加到字符串中,而不会真正将它们添加到一起
这里有一个例子
number1=“1”;
数字2=2;
编号=编号1+编号2;
控制台日志(编号);
document.getElementById(“演示”).innerHTML=text+=“
”+i+1
如果你看,你会发现你在说,“文本”+1+1。这是JavaScript作为动态语言的一个奇怪之处。当解释器到达目的地时,它正试图理解您试图做的事情:
- Aneeq是否希望有:
text
11
- Aneez想要:
text
2
等
因此,当您在第二个代码片段上时,您明确地说:
好的,我希望你:
获取文本
将“
”字符串连接到文本
将索引i转换为一个数字,并将这两个数字相加
最后,将总和添加到上一个字符串中
text+=”
“+(i+1)代码>使用ParenthSis,当前所有内容都转换为字符串。操作顺序,从左到右(字符串+1)+1
I,因为上下文不同。因为您是以字符串开头的,所以代码的计算结果是字符串,所以“+”用作连接符,而不是运算符。你可以在作业中添加内容,也可以在其周围添加括号。这是否回答了你的问题?既然这样,为什么不为(i=1;i)编写
("<br>" + i) + 1
"<br>" + (i + 1)
function myFunction() {
var text = "";
var i;
for (i = 0; i < 10; i++) {
text += "<br>" + (i + 1);
}
document.getElementById("demo").innerHTML = text;
}