簡體   English   中英

JavaScript循環。 我究竟做錯了什么?

[英]Javascript loop. What am I doing wrong?

嘗試建立一個輸出2到0-31的冪的循環。 到目前為止,我只得到2的31的冪。我在做什么錯?

function findPower()
{
    var answer=0;

    for(var i=0;i<=31;i++)
    {
        answer=Math.pow(2,i);
    }

    document.getElementById("output").innerHTML=answer;
}

因為在每次迭代的循環中您都覆蓋了answer的值,所以最后它僅具有最后一次迭代的值。

如果要迭代每個數字的值,那么一個簡單的解決方案是將它們推入數組,並在循環之后將它們加入以創建答案字符串,如下所示

function findPower() {
    var answer = [];

    for (var i = 0; i <= 31; i++) {
        answer.push(Math.pow(2, i));
    }

    document.getElementById("output").innerHTML = answer.join(', ');
}

 function findPower() { var answer = []; for (var i = 0; i <= 31; i++) { answer.push(Math.pow(2, i)); } document.getElementById("output").innerHTML = answer.join(', '); } findPower(); 
 <div id="output"></div> 

您在循環“ document.getElementById(” output“)。innerHTML = answer;”中聲明 正在覆蓋先前的值,因此您將獲得最后的值。 所以我要做的是隱藏值,而不是覆蓋先前的值

它應該喜歡

  function findPower() { var answer = 0; for (var i = 0; i <= 31; i++) { answer = Math.pow(2, i); document.getElementById("output").innerHTML = document.getElementById("output").innerHTML + "," + answer } } 
 <body onload="return findPower();"> </body> <span id="output"></span> 

如果我說對了,您想計算2的冪的總和:

for (var i = 0; i <= 31; i++) {
    answer += Math.pow(2, i);
}

注意“ +”號。 寫作:

answer += Math.pow(2, i);

與寫作相同:

answer = answer + Math.pow(2, i);

也許更好,更快。

function findPower() {
  var answer = [];
  var pow = 1;
  answer.push(pow);
  for (var i = 1; i <= 31; i++) {
    pow *= 2;
    answer.push(pow);
  }
  document.getElementById("output").innerHTML = answer.join(', ');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM