为什么for循环是无限循环?


let n = 5;
for (let a = 1, b = Math.pow(2, a); b <= n; a++) {
console.log(b);
}

我不明白为什么b没有随着a的增加而增加。我是否需要再次将a传递给b?

如果没有办法让这个循环以这种方式工作,有人能告诉我如何重写它使它工作吗?

一旦b被初始化,你的代码永远不会改变它,所以循环条件总是为真。

你可以用

let n = 5;
for (b = 2; b <= n; b*=2) {
console.log(b);
}

b是值类型而不是引用类型。所以更新a不会自动更新b的值

你必须手动更新

for (let a = 1,b =Math.pow(2,a); b <= n; a++,b=Math.pow(2,a)) {
console.log(a);
}

是的,您必须再次将a传递给b,以便使您的代码工作,因为b不会随着循环的进行而改变。下面是你如何重写你的代码来给它你想要的功能:

let n = 5;
let b;
for (let a = 1; b <= n; a++) {
b = Math.pow(2, a);
console.log(b);
}

你可以让它像下面这样工作。您的情况更可能适合whiledo while循环。

let n = 5;
let a = 1;

while(powToA(a)<=n) {
console.log(powToA(a));
a++;
}

function powToA(a) {
return Math.pow(2, a);
}

相关内容

  • 没有找到相关文章

最新更新