Penjelasan let dan Block Scoping in For Loops
Dalam JavaScript, kata kunci let menghalang pengisytiharan pembolehubah pendua dan membenarkan pembolehubah digunakan dalam penutupan. Walau bagaimanapun, kelakuannya dengan gelung for boleh mengelirukan.
Masalah:
Dalam kod berikut:
// prints '10' 10 times for (var i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) } // prints '0' through '9' for (let i = 0; i < 10; i++) { process.nextTick(_ => console.log(i)) }
Mengapa menggunakan let in gelung kedua menghasilkan berbeza output?
Penyelesaian:
Menggunakan let in untuk gelung mencipta skop blok baharu untuk setiap lelaran. Ini bermakna pembolehubah baharu i dicipta dalam setiap lelaran dan ia tidak dikongsi merentas lelaran. Dalam gelung pertama, yang menggunakan var, pembolehubah yang sama i digunakan semula dalam setiap lelaran, membawa kepada output '10' berulang kali.
Mekanisme Dalaman:
Spesifikasi ECMAScript mentakrifkan kelakuan let in untuk gelung seperti berikut:
Dalam contoh kedua, persekitaran leksikal baharu yang dicipta untuk setiap lelaran memastikan bahawa pembolehubah baru i digunakan dalam setiap lelaran, menghasilkan output '0' hingga '9'.
Kesimpulan:
Penggunaan let in untuk gelung mencipta skop blok dalam setiap lelaran, yang boleh berguna untuk mengelakkan konflik dan mengekalkan pengkapsulan. Tingkah laku ini bukan sahaja gula sintaksis tetapi ciri asas let in JavaScript.
Atas ialah kandungan terperinci Mengapakah Menggunakan `let` lwn. `var` dalam JavaScript Untuk Gelung Menghasilkan Keputusan Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!