Javascript 为什么输出不';不要应用第二个变量
我试图理解为什么等于10的变量txt在返回时没有应用到语句中?如果我将变量设置为10,当循环返回时,它不应该应用于输出吗 这是我的密码:Javascript 为什么输出不';不要应用第二个变量,javascript,html,function,while-loop,conditional,Javascript,Html,Function,While Loop,Conditional,我试图理解为什么等于10的变量txt在返回时没有应用到语句中?如果我将变量设置为10,当循环返回时,它不应该应用于输出吗 这是我的密码: 函数myFunction(){ var-myNumber=2; var=10; while(myNumber!=无穷大){ myNumber=myNumber*myNumber; txt=txt+myNumber+“”; } document.getElementById(“demo”).innerHTML=txt; } 试试看 您的var txt=10不在
函数myFunction(){
var-myNumber=2;
var=10;
while(myNumber!=无穷大){
myNumber=myNumber*myNumber;
txt=txt+myNumber+“
”;
}
document.getElementById(“demo”).innerHTML=txt;
}
试试看
您的var txt=10
不在while循环内,因此在每个循环后都不会重置它。我假设您的问题意味着您希望每次运行while循环时都有txt=10
,而只有myNumber
增量。如果是这种情况,您可以将代码简化如下:
function myFunction() {
var myNumber = 2;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
var txt = 10 + myNumber + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
函数myFunction(){
var-myNumber=2;
while(myNumber!=无穷大){
myNumber=myNumber*myNumber;
var txt=10+myNumber+“
”;
}
document.getElementById(“demo”).innerHTML=txt;
}
我认为问题在于您在txt中添加的中断。如果我理解正确,这将解决您的问题
function myFunction() {
var myNumber = 2;
var txt = 10;
var output = "";
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
txt = txt + myNumber;
output = output + txt + "<br>";
}
document.getElementById("demo").innerHTML = output;
}
函数myFunction(){
var-myNumber=2;
var=10;
var输出=”;
while(myNumber!=无穷大){
myNumber=myNumber*myNumber;
txt=txt+myNumber;
输出=输出+txt+“
”;
}
document.getElementById(“demo”).innerHTML=输出;
}
变量会随着循环的每次迭代而变化
让我们在每次迭代中跟踪值:
// 1) 14
// Effectively '14<br>`
// A result of 10 + (2*2) + <br>
// 2) 14
// 16
// Effectively '14<br>16<br>`
// This is because txt was '14<br>`
// So '14<br>` + (4*4) + <br>
// 3) 14
// 16
// 256
// Effectively '14<br>16<br>256<br>`
// This is because txt was '14<br>16<br>`
// So '14<br>16<br>` + (16*16) + <br>
#1迭代:txt==10+4+“
”==14
“
#2迭代:txt==“14
”+16+“
”==“14
16
”
#3迭代:txt==“14
16
”+256==“14
16
256”
等等。此外,在每次迭代中,您都会完全更改
的HTML代码,而不是使用append
添加。基本上,变量txt会随着每次迭代而变化,并且您会在中显示它的最后一个值。保存值10的变量文本将被重新分配给在第一次迭代中设置的字符串的值
如果您注销了txt
,您将在每次迭代中看到:
// 1) 14
// Effectively '14<br>`
// A result of 10 + (2*2) + <br>
// 2) 14
// 16
// Effectively '14<br>16<br>`
// This is because txt was '14<br>`
// So '14<br>` + (4*4) + <br>
// 3) 14
// 16
// 256
// Effectively '14<br>16<br>256<br>`
// This is because txt was '14<br>16<br>`
// So '14<br>16<br>` + (16*16) + <br>
/1)14
//有效的'14
`
//10+(2*2)+
// 2) 14
// 16
//实际上是'14
16
`
//这是因为txt是'14
`
//所以“14”+(4*4)+
// 3) 14
// 16
// 256
//有效地'14
16
256
`
//这是因为txt是'14
16
`
//所以'14
16
`+(16*16)+
等等……我不清楚问题出在哪里。你说申请是什么意思?你希望得到什么样的输出?所以基本上,我试图理解为什么第一个输出等于14,但当函数循环返回时,txt=10不会应用于其余的输出@在第一次迭代之前,它是数字10
。在该迭代之后,它是10+4
的总和,然后在最后转换为字符串
,因此“14
”
。所以我不知道你想要什么输出,但如果你希望每个数字都被10
抵消,那不是因为10
不再存在。如果你希望10保持不变,那么就做txt=10+myNumber+“
”是的,现在我完全明白了!!!你们真是太棒了!!!!!非常感谢……我在这里汗流浃背@squintyeah不,我完全理解为什么输出是现在的样子,谢谢大家!当你说注销时,你指的是什么?我指的是使用console.log