为什么输出不应用第二个变量

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>

等等...