Rumah > Soal Jawab > teks badan
var a = 1;
function a()
{
console.log(a);
};
a();
Barisan kod JS ini akan melaporkan ralat semasa dijalankan, tetapi apakah sebabnya? Minta Allah perjelaskan
过去多啦不再A梦2017-05-19 10:31:08
Function adalah warga pertama javascript, jadi ada promosi fungsi di sini. Pelaksanaan akhir kod di atas mempunyai kesan yang sama seperti
berikutfunction a()
{
console.log(a);
};
var a = 1;
a();
Ini akan menyebabkan nama fungsi asal ditimpa.
高洛峰2017-05-19 10:31:08
Pertama sekali, mari bercakap tentang js Apabila anda melihat var a = 1, anda perlu menghuraikannya dalam dua langkah Pertama, naikkan var a ke bahagian atas skop semasa, dan kemudian menghuraikannya ke bawah sehingga a = 1 dan. mula memberikan nilai
Ini adalah masalah pembolehubah dan fungsi yang mempunyai nama yang sama Ringkasnya, susunan penghuraian enjin js adalah seperti berikut
1 Pembolehubah dan pengisytiharan fungsi dinaikkan ke bahagian atas skop semasa → var a ↑ dan `fungsi a(. )
{
console.log(a);
}`
2 Kemudian huraikan baki kod `a=1;
a()`,
怪我咯2017-05-19 10:31:08
Ini kerana pengisytiharan fungsi akan dibuat lebih awal
var a = 1;
function a()
{
console.log(a);
};
a();
1) Pengisytiharan fungsi akan berada di bahagian atas
2) Pengisytiharan pembolehubah juga akan berada di bahagian atas
3) Perisytiharan fungsi akan berada di bahagian atas daripada perisytiharan pembolehubah: (fungsi berada di atas pembolehubah)
4) Pembolehubah dan pernyataan tugasan adalah ditulis bersama. Apabila dihuraikan oleh enjin js, ia akan dibahagikan kepada dua bahagian: pengisytiharan dan tugasan diletakkan di bahagian atas dan tugasan disimpan pada kedudukan asal 5) Pembolehubah yang diisytiharkan tidak akan diisytiharkan berulang kali .
Semoga ia membantu anda~var a = function ()
{
console.log(a);
};
var a = 1;
a();
漂亮男人2017-05-19 10:31:08
Ramai yang menyebut bahawa ia adalah masalah promosi berubah-ubah, tetapi penjelasannya tidak begitu tepat. var
Penambahbaikan dilakukan dalam bahagian, dan fungsi dipertingkatkan secara keseluruhan. FYI
Jadi ia sepatutnya kelihatan seperti ini:
var a;
function a ()
{
console.log(a);
};
a = 1;
a();