Rumah > Artikel > hujung hadapan web > Mengangkat dalam javascript?
“Hoisting ialah tingkah laku dalam javascript di mana semua pembolehubah dan pengisytiharan fungsi dialihkan ke bahagian atas skop yang mengandungi semasa fasa penyusunan sebelum pelaksanaan kod”
Anda mungkin menjumpai takrifan ini di mana-mana tetapi "adalah mitos bahawa semua pembolehubah dan pengisytiharan fungsi secara fizikal di atas kod " Ini tidak benar!
Tetapi sebaliknya, Dalam menaikkan semua pembolehubah dan pengisytiharan fungsi sudah mendapat memori yang ditetapkan sebelum pelaksanaan kod dalam kompilasi dan kekal tepat di tempat kami menaipnya.
Jadi dengan tepat cara var/let/const dan fungsi dinaikkan.
Berikut ialah beberapa contoh:
console.log(a) // undefined console.log(b) // ReferenceError console.log(c) // ReferenceError var a = 10; let b = 20; const c = 30;
Pembolehubah yang diisytiharkan dengan var akan dinaikkan dan semasa masa penyusunan var pembolehubah diperuntukkan dalam memori dengan nilai yang tidak ditentukan sebab itu apabila kita konsol var sebelum pengisytiharan kita menjadi tidak ditentukan
Pembolehubah yang diisytiharkan dengan const/let juga akan dinaikkan tetapi tidak dimulakan dengan undefined . kami tidak boleh mengaksesnya sebelum pengisytiharan, jika tidak, kami menerima ReferenceError. Ini disebabkan Temporal Dead Zone, masa di mana pembolehubah wujud tetapi tidak dimulakan .
Tetapi bagaimana pula dengan fungsi
Nah ia bergantung bagaimana kita mengisytiharkan fungsi kita. Lihat di bawah.
greet1(); greet2(); greet3(); greet4(); //function declaration is full hoisted function greet1(){ console.log("greet1"); } // TypeError: greet2 is not a function var greet2 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet3' before initialization let greet3 = function(){ console.log("greet2"); } // ReferenceError: Cannot access 'greet4' before initialization const greet4 = function(){ console.log("greet2"); }
Pengisytiharan fungsi tradisional dinaikkan sepenuhnya bermakna kita boleh memanggilnya sepanjang kod.
tetapi dengan ungkapan fungsi, kami tidak dapat melakukannya sebelum ia diisytiharkan. Inilah sebabnya mengapa tiga fungsi yang diisytiharkan dengan pembolehubah memberi kita ralat. Jadi kita mempunyai dua pilihan sama ada kita menukar ungkapan fungsi kepada pengisytiharan fungsi atau memanggil fungsi selepas pengisytiharan.
Atas ialah kandungan terperinci Mengangkat dalam javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!