【问题标题】:Javascript loop. What am I doing wrong?Javascript 循环。我究竟做错了什么?
【发布时间】:2015-08-26 13:44:16
【问题描述】:

尝试创建一个输出 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;
}

【问题讨论】:

    标签: javascript loops for-loop


    【解决方案1】:

    因为在每次迭代的循环中,你都覆盖了 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();
    &lt;div id="output"&gt;&lt;/div&gt;

    【讨论】:

      【解决方案2】:

      您在循环“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>

      【讨论】:

        【解决方案3】:

        如果我猜对了,你想计算 2 的幂和:

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

        注意“+”号。写作:

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

        和写法一样:

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

        【讨论】:

          【解决方案4】:

          也许它会更好更快。

          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(', ');
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-06
            • 1970-01-01
            • 1970-01-01
            • 2016-07-18
            • 2014-09-13
            • 2019-12-23
            • 2014-06-15
            • 1970-01-01
            相关资源
            最近更新 更多