在下面的示例中,为什么记录512,而不是1?我了解javascript是同步的,因此不应该在for循环完成之前就进行日志记录吗?因此,登录时我期望结果= 1。
let result = 1;
for (counter = 1; counter < 10; counter ++) {
result = result * 2;
}
console.log(result);
Synchronous
:表示一次只能进行一项操作。
根据此定义,console.log()
函数将仅在循环完成执行后才执行。
如果您希望代码在执行循环时运行console.log()
,则意味着您的代码是异步的。
这里的问题是您何时登录。
[当您记录“结果”的内容时,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
JavaScript同步意味着一个线程工作,因此此操作是迭代的您可以查看此link了解更多信息
regard :)