【问题标题】: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();
<div id="output"></div>
【解决方案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(', ');
}