For循环在javascript中异步执行?

问题描述 投票:-2回答:3

在下面的示例中,为什么记录512,而不是1?我了解javascript是同步的,因此不应该在for循环完成之前就进行日志记录吗?因此,登录时我期望结果= 1。

let result = 1;
for (counter = 1; counter < 10; counter ++) {
    result = result * 2;
}
console.log(result);
javascript execution synchronous
3个回答
1
投票

Synchronous:表示一次只能进行一项操作。

根据此定义,console.log()函数将仅在循环完成执行后才执行。

如果您希望代码在执行循环时运行console.log(),则意味着您的代码是异步的。


1
投票

这里的问题是您何时登录。

[当您记录“结果”的内容时,for循环已完成,并且“结果”变量的值已在循环的每次迭代中更新。

以下内容可能对此进行说明

let result = 1;
console.log(result);
console.log("loop start");
for (counter = 1; counter < 10; counter ++) {
    console.log(result);
    result = result * 2;
}
console.log("loop end");
console.log(result);

将为您提供以下结果:

1
loop start
1
 2
 8
 16
 32
 64
 128
 256
loop end
 512

0
投票

JavaScript同步意味着一个线程工作,因此此操作是迭代的您可以查看此link了解更多信息

regard :)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.