为什么输出不应用第二个变量
Why output doesn't apply the second variable
我试图理解为什么等于 10 的变量 txt 在返回时没有应用到语句中?如果我将变量设置为 10,当循环返回时它不应该应用于输出吗?
这是我的代码:
function myFunction() {
var myNumber = 2;
var txt = 10;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
txt = txt + myNumber + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
您的 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;
}
我认为问题在于您添加到 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;
}
变量确实随着循环的每次迭代而改变。
让我们在每次迭代中都遵循该值:
#1 iteration: txt == 10 + 4 + "<br>" == "14<br>"
#2 iteration: txt == "14<br>" + 16 + "<br>" == "14<br>16<br>"
#3 iteration: txt == "14<br>16<br>" + 256 == "14<br>16<br>256"
等等。此外,在每次迭代中,您都会完全更改 <p>
的 HTML 代码,例如,与添加 append
相比。基本上变量 txt 随每次迭代而变化,并且您在 <p>
中显示它的最后一个值
保存值为 10 的 var text
被重新分配为在第一次迭代中设置的字符串的值。
如果您注销 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>
等等...
我试图理解为什么等于 10 的变量 txt 在返回时没有应用到语句中?如果我将变量设置为 10,当循环返回时它不应该应用于输出吗?
这是我的代码:
function myFunction() {
var myNumber = 2;
var txt = 10;
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
txt = txt + myNumber + "<br>";
}
document.getElementById("demo").innerHTML = txt;
}
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
您的 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;
}
我认为问题在于您添加到 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;
}
变量确实随着循环的每次迭代而改变。
让我们在每次迭代中都遵循该值:
#1 iteration: txt == 10 + 4 + "<br>" == "14<br>"
#2 iteration: txt == "14<br>" + 16 + "<br>" == "14<br>16<br>"
#3 iteration: txt == "14<br>16<br>" + 256 == "14<br>16<br>256"
等等。此外,在每次迭代中,您都会完全更改 <p>
的 HTML 代码,例如,与添加 append
相比。基本上变量 txt 随每次迭代而变化,并且您在 <p>
保存值为 10 的 var text
被重新分配为在第一次迭代中设置的字符串的值。
如果您注销 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>
等等...