以下2个代码片段有什么区别?通过示例了解javascript函数范围
我无法理解它们之间的任何差异。 两者都使用闭包(根据我的知识和纠正我,如果我错了) 并打印相同的输出是0,1,2,3,4。
for(var i = 0; i < 5; i++) {
(function(){
var tmp = i;
setTimeout(function(){
console.log(tmp);
}, 0)
})();
}
和
for(var i = 0; i < 5; i++) {
setTimeout((function(tmp){
return function() {
console.log(tmp);
}
})(i), 0);
}
所以我认为它们是相同的。你为什么如此决心找出差异?如果他们工作一样,那么谁在乎呢? – Turtle
结果无差异。在每种情况下,您只需制作一个不同类型的封盖。通常有很多不同的方法来实现给定的封闭。 – jfriend00
@Turtle:这段代码片段在我的朋友面试时给了他,他们让他说出了区别。我对这段代码感到有些惊讶,所以如果我错过了某些东西,会得到证实。 – Parashuram