【发布时间】:2020-02-04 06:46:58
【问题描述】:
在下面的示例中,为什么它记录 512,而不是 1?我知道 javascript 是同步的,所以日志记录不应该在 for 循环完成之前很久吗?出于这个原因,我在登录时期望结果 = 1。
let result = 1;
for (counter = 1; counter < 10; counter ++) {
result = result * 2;
}
console.log(result);
【问题讨论】:
-
不确定这是否是拼写错误,但请回复:“我理解 javascript 是同步的”:它是同步的,除非您执行异步操作。该代码是同步的,因此循环之后的代码在循环完成之前不会执行。否则一切都需要回调。
-
在大多数情况下,大多数 javascript 表达式是顺序的(同步的),包括循环。还有一些异步方法,比如
setTimeout、setInterval、XMLHttpRequest,也是顺序发起的,但是异步等待返回或者回调。 -
为什么会这样?循环在日志之前执行。
标签: javascript execution synchronous