Rumah > hujung hadapan web > tutorial js > Mengapakah `let` dan `const` Nampaknya Tidak Ditingkatkan dalam JavaScript?

Mengapakah `let` dan `const` Nampaknya Tidak Ditingkatkan dalam JavaScript?

DDD
Lepaskan: 2025-01-03 02:29:40
asal
342 orang telah melayarinya

Why Do `let` and `const` Seem Not to Be Hoisted in JavaScript?

Pengangkatan Pembolehubah Diisytiharkan dengan let atau const

Dalam ES6, pembolehubah yang diisytiharkan dengan let atau const kelihatan mempamerkan tingkah laku angkat yang tidak konsisten berbanding dengan var.

Mitos Mengangkat

Pertama, adalah penting untuk jelaskan bahawa semua pengisytiharan dalam JavaScript dinaikkan, termasuk yang menggunakan let, const, var, function, function* dan class. Ini bermakna semua pengisytiharan ini boleh dilihat di seluruh skop yang ditakrifkan.

Perbezaan dengan let dan const

Perbezaan utama bukan terletak pada pengangkatan tetapi pada permulaan daripada let dan const pembolehubah.

  • var/function/function*: Pengisytiharan ini dimulakan dengan undefined atau fungsi itu sendiri apabila pengikatan dibuat di bahagian atas skop.
  • let/const/class: Pengisytiharan ini kekal tidak dimulakan sehingga pernyataan di mana ia ditakrifkan dilaksanakan.

Jurang temporal ini antara pengisytiharan dan permulaan mewujudkan salah tanggapan tentang pengangkatan.

Zon Mati Sementara

Untuk biarkan dan pembolehubah const, tempoh antara pengisytiharan dan permulaan dikenali sebagai mati sementara zon. Pada masa ini, mengakses pembolehubah menghasilkan ReferenceError.

Contoh

x = y = "global";
(function() {
    console.log(x); // undefined
    console.log(y); // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());
Salin selepas log masuk

Dalam contoh ini, var dan biarkan pembolehubah x dan y diisytiharkan di bahagian atas skop fungsi. Walau bagaimanapun, pemboleh ubah let y tidak dimulakan sehingga kemudian, mewujudkan zon mati temporal di mana mengakses y melemparkan ralat.

Kesimpulan

Semasa semua pengisytiharan dalam JavaScript dinaikkan, pembolehubah let dan const mempamerkan tingkah laku permulaan yang berbeza. Tingkah laku ini membawa kepada persepsi "tidak dinaikkan" tetapi sebenarnya disebabkan oleh zon mati temporal yang dicipta oleh permulaan lewat. Kedua-dua pembolehubah let dan const berfungsi secara sama dari segi pengangkatan.

Atas ialah kandungan terperinci Mengapakah `let` dan `const` Nampaknya Tidak Ditingkatkan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan