Rumah > hujung hadapan web > tutorial js > Mengapa Pembolehubah Global saya Tidak Ditakrifkan Di Dalam Fungsi JavaScript?

Mengapa Pembolehubah Global saya Tidak Ditakrifkan Di Dalam Fungsi JavaScript?

Susan Sarandon
Lepaskan: 2024-12-03 15:50:14
asal
827 orang telah melayarinya

Why is my Global Variable Undefined Inside a JavaScript Function?

Terkejut dengan Pembolehubah Global yang Tidak Ditakrifkan dalam JavaScript: Memahami Pengangkat Pembolehubah

Tingkah laku yang anda temui di mana pembolehubah global pada mulanya tidak ditentukan dalam fungsi boleh dikaitkan dengan pengangkat pembolehubah JavaScript mekanisme. JavaScript secara automatik mengangkat pengisytiharan pembolehubah ke bahagian atas skop yang disertakan, walaupun jika penetapan nilai sebenar berlaku kemudian dalam kod.

Dalam contoh yang diberikan, nilai pembolehubah global diisytiharkan dengan nilai awal 10. Walau bagaimanapun, dalam fungsi ujian, pembolehubah tempatan dengan nama (nilai) yang sama juga diisytiharkan tanpa nilai yang ditetapkan (yang lalai kepada undefined).

Pernyataan console.log pertama dalam fungsi cuba mengakses nilai global, tetapi memandangkan nilai setempat telah dinaikkan, ia diutamakan. Akibatnya, panggilan pertama dicetak tidak ditentukan. Selepas itu, pernyataan console.log kedua dalam fungsi memaparkan nilai yang diberikan kepada pembolehubah nilai setempat (20).

Fenomena angkat ini digunakan untuk kedua-dua pembolehubah dan fungsi dalam konteks pelaksanaan semasa mereka. Adalah penting untuk memahami bahawa hanya pengisytiharan, bukan tugasan, yang dinaikkan. Ini bermakna pembolehubah boleh diakses di seluruh skopnya, tetapi pembolehubah tersebut mungkin tidak mempunyai nilai yang ditetapkan sehingga kod tersebut mencapai penyataan tugasan.

Sebagai contoh, pertimbangkan coretan kod berikut:

var test = 'start';

function end() {
    test = 'end';
    var test = 'local';
}

end();
alert(test);
Salin selepas log masuk

Yang menghairankan, kod ini akan mencetak permulaan, walaupun penghujung fungsi seolah-olah mengubah nilai pembolehubah ujian. Ini kerana dalam fungsi akhir, pengisytiharan pembolehubah tempatan baharu diutamakan dan pembolehubah global kekal tidak berubah.

Walaupun pengangkat pembolehubah boleh memudahkan kod, adalah penting untuk mengetahui implikasinya untuk mengelakkan tingkah laku yang tidak diingini. Merangkum pembolehubah dengan betul dan memahami sepenuhnya mekanisme pengangkatan boleh membantu mengekalkan struktur kod dan mencegah kemungkinan ralat.

Atas ialah kandungan terperinci Mengapa Pembolehubah Global saya Tidak Ditakrifkan Di Dalam Fungsi 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan