在尝试阅读Async javascript book时(也许我还没有资格阅读本书),我看到了以下示例:
for (var i = 1; i <=3; i++ ) {
setTimeout(function() { console.log(i); }, 0);
};
我无法理解为什么答案是4,4,4
我试着理解提到哪本书,但我不明白他们所指的是什么。 有人可以把这个放在更多外行人的任期吗?
更新(在我收到所有评论后).. 为了帮助自己理解,我为像我这样的新手添加了一些控制台日志,可能需要帮助w /同样的问题。这是一个很棒的网站!我将回来更多..
for ( var i = 1; i <= 3; i++ ) {
console.log(i);
setTimeout( function() { console.log(i); }, 0 );
console.log("still", i);
};
console.log('jo');
1
still 1
2
still 2
3
still 3
jo
4
4
4
[Finished in 0.1s]
答案 0 :(得分:0)
当浏览器有时间时,settimeout被放到要完成的项目列表中。 浏览器只有在完成所有其他工作后才能读取该列表。
以不同的方式解释它: JavaScript是单线程的,它一次只能做一件事,只有在没有代码运行时才能完成settimeouts列表