Versi pertama:
for (var x in set) {
...
}
mendeklarasikan variabel lokal yang dipanggil x
. Versi kedua:
for (x in set) {
...
}
tidak.
Jika x
sudah menjadi variabel lokal (yaitu Anda memiliki var x;
atau di var x = ...;
suatu tempat sebelumnya dalam lingkup Anda saat ini (yaitu fungsi saat ini)) maka mereka akan setara. Jika x
belum menjadi variabel lokal, maka menggunakan yang kedua akan secara implisit mendeklarasikan variabel global x
. Pertimbangkan kode ini:
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();
Anda mungkin berharap ini peringatan hey
, there
, heli
, hey
, there
, copter
, tapi karena x
satu dan sama itu akan mengingatkan hey
, there
, there
, hey
, there
, there
. Anda tidak menginginkan itu! Gunakan var x
difor
loop .
Untuk melengkapi semua ini: jika for
loop berada dalam cakupan global (yaitu bukan dalam fungsi), maka cakupan lokal (cakupan x
dideklarasikan jika Anda menggunakan var x
) sama dengan cakupan global (cakupan x
secara implisit dideklarasikan dalam jika Anda menggunakan x
tanpa var), maka kedua versi tersebut akan sama.
var
tidak digunakan untuk menyatakan iteratori
:Uncaught ReferenceError: i is not defined
. Jadi saya akan menggunakannya mulai sekarang: / webpack memperlakukan variabel "global" dengan aneh, untuk lebih lanjut lihat: stackoverflow.com/a/40416826