Rumah  >  Artikel  >  hujung hadapan web  >  Mengangkat dalam javascript?

Mengangkat dalam javascript?

PHPz
PHPzasal
2024-07-17 10:40:29701semak imbas

Hoisting in 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!

Kenyataan:
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