For循环是否在javascript中异步执行?

For循环是否在javascript中异步执行?,javascript,execution,synchronous,Javascript,Execution,Synchronous,在我下面的例子中,为什么它记录的是512,而不是1?我知道javascript是同步的,所以日志记录不应该在for循环完成之前很久发生吗?由于这个原因,我在登录时希望结果为1 let result = 1; for (counter = 1; counter < 10; counter ++) { result = result * 2; } console.log(result); let result=1; 用于(计数器=1;计数器

在我下面的例子中,为什么它记录的是512,而不是1?我知道javascript是同步的,所以日志记录不应该在for循环完成之前很久发生吗?由于这个原因,我在登录时希望结果为1

let result = 1;
for (counter = 1; counter < 10; counter ++) {
    result = result * 2;
}
console.log(result);
let result=1;
用于(计数器=1;计数器<10;计数器++){
结果=结果*2;
}
控制台日志(结果);

同步
:表示一次只能进行一个操作

根据此定义,只有在循环完成执行后,才会执行
console.log()
函数


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

这里的问题是何时登录

当您记录“result”的内容时,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);

JavaScript同步,这意味着是一个线程的工作,所以这个操作是迭代的 有关更多信息,请参见此


注意:)

不确定这是否是一个输入错误,但请注意:“我理解javascript是同步的”:除非您执行异步操作,否则它是同步的。该代码是同步的,因此循环完成后才会执行循环后的代码。否则一切都需要回调。大多数javascript表达式都是顺序的(同步的),包括循环。还有一些异步方法,例如
setTimeout
setInterval
XMLHttpRequest
,它们也是按顺序启动的,但异步地等待返回或回调。为什么会这样?循环在日志之前执行。请不要只是链接到另一个答案。
1
loop start
1
 2
 8
 16
 32
 64
 128
 256
loop end
 512