以下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