Versi pertama:
for (var x in set) {
...
}
mendeklarasikan variabel lokal yang dipanggil x. Versi kedua:
for (x in set) {
...
}
tidak.
Jika xsudah 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 xbelum 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 xsatu dan sama itu akan mengingatkan hey, there, there, hey, there, there. Anda tidak menginginkan itu! Gunakan var xdifor loop .
Untuk melengkapi semua ini: jika forloop berada dalam cakupan global (yaitu bukan dalam fungsi), maka cakupan lokal (cakupan xdideklarasikan jika Anda menggunakan var x) sama dengan cakupan global (cakupan xsecara implisit dideklarasikan dalam jika Anda menggunakan xtanpa var), maka kedua versi tersebut akan sama.
vartidak 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