aşağıdaki JavaScript kodu göz önünde bulundurun:javascript kapatma anında değerlendirme
var a = [];
var f = function() {
for (var i = 0; i < 3; i++) {
a.push(function(){alert(i)});
}
for (var j = 0; j < 3; j++) {
a[j]();
}
};
uyarıları çıktısını '3' her üç kez. Farklı bir davranış istiyoruz - döngünün her tekrarında i mevcut değerini yazar bir fonksiyonu oluşturur. Yani Farklı indeksler basan 3 fonksiyon.
Herhangi bir fikrin var mı? benzer
for (var i = 0; i < 3; i++) {
a.push((function(i) {
return function() {
alert(i);
}
})(i));
}
for (var j = 0; j < 3; j++) {
a[j]();
}
Veya bilmediğimiz bir şey:
Sadece bu eklemek için ... http://www.mattfreeman.co.uk/2010/03/closures-scope-in- olduğunu javascript-vs-c/ –