所以我在 Twitter 上看到了某人的推文,提到以下脚本是在求职面试中给出的。
for (var i = 0; i < 3; i+=1) {
setTimeout(function() {
console.log(i)
}, 100)
}
Run Code Online (Sandbox Code Playgroud)
受访者被要求预测这个剧本的结果,他在推文中提到这对他来说很明显。
对我来说,作为对 Javascript 的全新(或不感兴趣),很难理解为什么结果不是:
1) 0, 1, 2 依次。(作为传统的'for-loop')
2)。只打印 3 一次。(如果在调用函数之前完全完成了迭代)
但是打印 3 三遍。
这是因为 Javascript 不是顺序编程语言,或者 Javascript 的特征,或者两者兼而有之?