[英]Why output doesn't apply the second variable
我試圖理解為什么等於txt的變量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
的HTML代碼。 基本上,變量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>
等等...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.