İlk versiyon:
for (var x in set) {
...
}
adlı yerel bir değişken bildirir x. İkinci versiyon:
for (x in set) {
...
}
değil.
Eğer x(bir var yani zaten yerel bir değişkendir var x;veya var x = ...;bir yere daha erken geçerli kapsamda (yani şimdiki işlevi)) o zaman eşdeğer olacaktır. Eğer xzaten yerel bir değişken değildir, o zaman ikinci kullanarak örtülü bir küresel değişkeni ilan edecek x. Bu kodu düşünün:
var obj1 = {hey: 10, there: 15};
var obj2 = {heli: 99, copter: 10};
function loop1() {
for (x in obj1) alert(x);
}
function loop2() {
for (x in obj2) {
loop1();
alert(x);
}
}
loop2();
Uyarının bu beklediğinizden hey, there, heli, hey, there, copter, ancak o zamandan beri xbir ve onu uyaracaktır aynıdır hey, there, there, hey, there, there. Bunu istemezsin! Kullan var xsenin içinde fordöngüler.
Her şeyin üstesinden gelmek için: fordöngü genel kapsamdaysa (yani bir işlevde değilse), yerel kapsam (kullanıyorsanız kapsam xiçinde bildirilir var x) genel kapsam ile aynıdır (kapsam x, içinde dolaylı olarak bildirilir) xvar olmadan kullanırsanız ), bu nedenle iki sürüm aynı olacaktır.
varyineleyici ilan etmek kullanılmamıştıri:Uncaught ReferenceError: i is not defined. Bundan sonra onu kullanacağım: / webpack "global" değişkenleri tuhaf bir şekilde ele alıyor, daha fazlası için bkz: stackoverflow.com/a/40416826