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