Memahami skop pembolehubah JavaScript dan angkat: Panduan Komprehensif
Konsep Utama:
var
dan let
). const
Deklarasi var
dan let
dinaikkan ke atas blok mereka tetapi tetap tidak terinkali, mewujudkan "zon mati temporal." const
Skop pembolehubah secara terperinci:
Skop pembolehubah dalam JavaScript ditentukan oleh lokasi pengisytiharannya, menentukan kebolehcapaiannya dalam program. Tiga kaedah wujud untuk pengisytiharan berubah -ubah: Legacy Kata kunci dan kata kunci moden var
dan let
. Walaupun const
adalah pilihan tunggal pra-ES6, var
dan let
menawarkan peraturan yang lebih ketat, meningkatkan kebolehpercayaan kod. const
) dan skop blok (untuk var
dan let
). Skop fungsi adalah bentuk khusus skop blok. const
Skop global:
Skop paling luar dalam skrip adalah skop global. Pembolehubah yang diisytiharkan di sini menjadi global, boleh diakses dari mana saja dalam program:
// Global Scope const name = "Monique"; function sayHi() { console.log(`Hi ${name}`); } sayHi(); // Hi Monique
skop tempatan:
pembolehubah yang diisytiharkan dalam satu blok (mis.,, if
, fungsi) adalah setempat ke blok itu. Fungsi mentakrifkan skop untuk pembolehubah yang diisytiharkan dengan for
, var
, dan let
. Blok kod hanya mentakrifkan skop untuk const
dan let
; const
terhad kepada skop fungsi. var
let
dan const
memperkenalkan skop blok, mewujudkan skop tempatan baru untuk setiap blok. Blok mandiri juga menentukan skop:
// Global Scope const name = "Monique"; function sayHi() { console.log(`Hi ${name}`); } sayHi(); // Hi Monique
Skop bersarang mungkin, dengan skop dalaman mengakses pembolehubah dari skop luar tetapi tidak sebaliknya.
metafora visual untuk skop:
Bayangkan dunia: negara mempunyai sempadan (skop), bandar -bandar di dalam negara mempunyai skop mereka sendiri, dan sebagainya. Skop global adalah seperti lautan dunia, merangkumi semua. Analogi ini menggambarkan bagaimana skop berfungsi: Mencari pemboleh ubah bermula dalam skop paling dalam dan meneruskan ke luar sehingga dijumpai atau ralat berlaku. Pencarian ini dipanggil leksikal (statik).
Hoisting:
mekanisme "angkat" JavaScript menggerakkan pengisytiharan pembolehubah dan fungsi ke bahagian atas skop mereka semasa penyusunan. Walau bagaimanapun, hanya pengisytiharan yang dinaikkan; Tugasan kekal di tempat. Pertimbangkan ini:
{ // standalone block scope }
output adalah undefined
kerana state
diisytiharkan tetapi belum diberikan nilai. Enjin menafsirkannya sebagai:
console.log(state); // undefined var state = "ready";
let
dan const
pembolehubah juga dinaikkan tetapi tidak dimulakan, mengakibatkan "zon mati temporal" (TDZ) sebelum pengisytiharan mereka. Mengaksesnya dalam TDZ melemparkan ReferenceError
.
Fungsi dan angkat:
Pengisytiharan fungsi sepenuhnya dinaikkan, membenarkan panggilan sebelum definisi mereka:
var state; // hoisted console.log(state); state = "ready";
pembolehubah. let
Perbezaan utama dan amalan terbaik:
var
let
: blok-scoped. const
Soalan -soalan yang sering ditanya:
let
const
let
dan const
) untuk organisasi kod dan penyelenggaraan yang lebih baik.
Atas ialah kandungan terperinci Demystifying JavaScript Variable Scope and Hoisting. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!