Javascript 为什么输出不';不要应用第二个变量

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不在

我试图理解为什么等于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
不在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+“
console.log