Peningkatan Pembolehubah Diisytiharkan dengan let atau const
Walaupun pembolehubah yang diisytiharkan dengan var berkelakuan seperti yang diharapkan semasa dinaikkan, pembolehubah yang diisytiharkan dengan let atau const pameran tingkah laku yang berbeza.
Angkat Semua Pengisytiharan
Semua pengisytiharan JavaScript (var, let, const, function, function*, class) menjalani pengangkatan, bermakna ia boleh dikenali di mana-mana dalam skop masing-masing.
Perbezaan Permulaan
Walau bagaimanapun, perbezaan antara var/fungsi/fungsi* dan perisytiharan let/const/class terletak pada permulaannya. Perisytiharan Var dimulakan dengan tidak ditentukan dari saat penciptaan mengikat pada permulaan skop. Sebaliknya, pengisytiharan let/const/class kekal tidak dimulakan sehingga penyataannya dinilai.
Zon Mati Sementara untuk Pembolehubah Tidak Dimulakan
Keadaan tidak dimulakan ini mewujudkan "zon mati sementara " di mana mengakses pembolehubah sebelum permulaan menghasilkan a ReferenceError.
Contoh:
x = y = "global"; (function() { x; // undefined y; // Reference error: y is not defined var x = "local"; let y = "local"; }());
let vs. const dalam Hoisting
Biar dan const beroperasi secara sama dari segi istilah daripada mengangkat. Perbezaan di antara mereka ialah pemalar mesti sentiasa diberi nilai semasa pengisytiharan.
Kesimpulan
Pembolehubah yang diisytiharkan dengan let atau const dinaikkan, tetapi ia kekal tidak dimulakan dalam zon mati sementara sehingga pernyataan pengisytiharan mereka diproses. Mengaksesnya lebih awal akan mengakibatkan ReferenceError.
Atas ialah kandungan terperinci Bagaimanakah `let` dan `const` Berbeza daripada `var` dalam JavaScript Hoisting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!