在下面的示例中,为什么它记录512,而不是1?我了解javascript是同步的,因此不应该在for循环完成之前就进行日志记录吗?因此,我期望登录时结果为1。
let result = 1;
for (counter = 1; counter < 10; counter ++) {
result = result * 2;
}
console.log(result);
答案 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以获得更多信息
问候:)