for
(
var
i = 1; i <= 3; i++) {
setTimeout(
function
(){ console.log(i); }, 0);
};
 
 
一般人会以为输出结果会是
以上循环会输出1,2,3,或者重复输出这3个数字。
其实结果是
 
javascrip异步问题
输出三个4.为什么?
原因是执行setTimeout()函数是会有一个延时队列,然后javascrip再执行下一行代码,直到没有任何代码时javacsrip返回队列执行。“嘿。现在队列中都有谁?”
很明显,当javacsrip回到队列时,变量i的值已经是4了,就输出4了。javacsrip事件处理器在线程空闲前不会运行。
 

相关文章:

  • 2021-09-15
  • 2021-07-10
  • 2022-12-23
  • 2022-12-23
  • 2021-12-10
  • 2021-05-18
  • 2021-05-18
  • 2022-12-23
猜你喜欢
  • 2021-11-21
  • 2021-06-23
  • 2021-12-29
  • 2021-12-08
  • 2022-02-09
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案