For循环在javascript中异步执行?

时间:2019-10-06 22:16:52

标签: javascript execution synchronous

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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

以下内容可能说明了这一点

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

答案 2 :(得分:0)

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

问候:)