Rumah >hujung hadapan web >tutorial js >Misteri Pengangkatan dalam JavaScript!
JavaScript penuh dengan keanehan, dan mengangkat adalah salah satu yang cenderung mengelirukan pendatang baru. Tetapi jangan bimbang pada penghujung siaran ini, anda akan mempunyai pemahaman yang jelas tentang angkat, dipermudahkan!
Pada asasnya, angkat ialah gelagat lalai JavaScript untuk memindahkan pengisytiharan ke bahagian atas skopnya. Ini tidak bermakna kod itu disusun semula secara fizikal—itulah cara enjin JavaScript mentafsirnya.
Fikirkan seperti ini: sebelum JavaScript mula melaksanakan kod anda, ia "menyediakan" dengan memperuntukkan memori untuk semua pembolehubah dan fungsi di hadapan, walaupun sebelum satu baris kod dilaksanakan.
Hanya pembolehubah dinaikkan.
?? Tidak benar
Kedua-dua pengisytiharan fungsi dan pengisytiharan berubah dinaikkan.
Pembolehubah dinaikkan dimulakan secara automatik.
?? Salah lagi
Pembolehubah dinaikkan tetapi tidak dimulakan. Nilai mereka kekal tidak ditentukan sehingga ditetapkan secara eksplisit.
1. Pengangkat Boleh Ubah
Mari mulakan dengan pembolehubah yang diisytiharkan menggunakan var:
console.log(greeting); // Output: undefined var greeting = "Hello, World!";
Apa yang berlaku di sini? JavaScript memperlakukan kod seperti ini semasa pelaksanaan:
var greeting; // Declaration is hoisted console.log(greeting); // Accesses the variable before initialization greeting = "Hello, World!"; // Initialization happens here
Tetapi dengan let dan const, ia adalah cerita yang berbeza:
console.log(name); // ReferenceError: Cannot access 'name' before initialization let name = "Sudhil";
Pembolehubah yang diisytiharkan dengan let atau const dinaikkan, tetapi ia berada dalam "zon mati sementara" (TDZ) sehingga pengisytiharannya ditemui.
2. Fungsi Mengangkat
Pengisytiharan fungsi dinaikkan sepenuhnya, kedua-dua nama dan badannya tersedia sebelum baris pengisytiharan:
sayHello(); // Output: "Hello!" function sayHello() { console.log("Hello!"); }
Walau bagaimanapun, ungkapan fungsi berkelakuan berbeza:
sayHi(); // TypeError: sayHi is not a function var sayHi = function () { console.log("Hi!"); };
Dalam kes ini, pembolehubah sayHi dinaikkan tetapi tidak dimulakan sehingga tugasan dicapai.
3. Pengangkatan Kelas
Kelas berkelakuan serupa dengan let dan const. Mereka dinaikkan tetapi tidak boleh diakses sebelum pengisytiharan mereka.
const instance = new MyClass(); // ReferenceError: Cannot access 'MyClass' before initialization class MyClass { constructor() { this.name = "Classy!"; } }
1. Ramalkan Gelagat
Memahami pengangkatan membantu anda meramalkan cara kod anda akan dijalankan dan mengelakkan perangkap biasa seperti menggunakan pembolehubah sebelum ia dimulakan.
2. Kod Bersih
Untuk mengelakkan kekeliruan, isytiharkan pembolehubah dan fungsi di bahagian atas skopnya. Ini sejajar dengan gelagat angkat JavaScript dan menjadikan kod anda lebih mudah dibaca.
Berikut Perkara Yang Perlu Diingati Mengenai Mengangkat: ?
Terima kasih kerana membaca! ?
Teruskan bereksperimen dengan kebiasaan JavaScript dan nantikan lebih banyak lagi dalam siri ini.?
Selamat Mengekod! ???✨
Atas ialah kandungan terperinci Misteri Pengangkatan dalam JavaScript!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!