Rumah  >  Artikel  >  hujung hadapan web  >  Mengapakah Mengisytiharkan Pembolehubah JavaScript di Konsol Menghasilkan \"undefined\"?

Mengapakah Mengisytiharkan Pembolehubah JavaScript di Konsol Menghasilkan \"undefined\"?

Susan Sarandon
Susan Sarandonasal
2024-10-20 08:43:30590semak imbas

Why Does Declaring JavaScript Variables at the Console Result in

Mengapa Output Konsol "tidak ditentukan" Apabila Mengisytiharkan Pembolehubah JavaScript di Konsol?

Apabila mengisytiharkan pembolehubah JavaScript di konsol menggunakan var a; , ia mungkin kelihatan membingungkan apabila konsol mencetak "tidak ditentukan." Walau bagaimanapun, tingkah laku ini bukan semata-mata disebabkan oleh ketiadaan pemula dalam pernyataan pengisytiharan.

Sebab Sebenar: Pernyataan Eval

Sebab di sebalik tingkah laku ini terletak pada cara kerja pernyataan eval. Apabila menilai ungkapan atau pernyataan, pernyataan eval mentafsir keputusannya. Walau bagaimanapun, jika hasilnya adalah nilai, eval mengembalikan nilai tersebut. Jika tidak, jika hasilnya kosong (seperti yang berlaku dengan var a;), eval mengembalikan tidak ditentukan.

Pengisytiharan Pembolehubah sebagai Ungkapan

Menariknya, JavaScript merawat var a; pernyataan pengisytiharan sebagai ungkapan dan bukannya pernyataan. Ini bermakna ia mengembalikan hasil, yang kebetulan kosong. Oleh itu, apabila var a; diproses dalam konsol, pernyataan eval secara berkesan mentafsir hasil kosong dan mengembalikan tidak ditentukan, yang kemudiannya dicetak ke konsol.

Pengisytiharan Diabaikan

Dalam kes tertentu, pembolehubah dan pengisytiharan fungsi seterusnya mungkin diabaikan oleh konsol jika terdapat pernyataan dengan hasil yang tidak kosong. Contohnya:

var a = 3;
undefined

var a = 3; a = 4;
4

var a = 3; a = 4; var a = 5; function f() {};
4

Ini kerana penilaian SourceElements (termasuk pengisytiharan) berhenti sebaik sahaja hasil yang tidak kosong ditemui, yang membawa kepada pencetakan hasil pernyataan tersebut dan bukannya keputusan kosong bagi pengisytiharan seterusnya.

Pengisytiharan Fungsi lwn. Ungkapan

Satu lagi perbezaan halus timbul dengan pengisytiharan dan ungkapan fungsi. Apabila fungsi diisytiharkan menggunakan fungsi f() {}, ia dianggap sebagai pernyataan Pengisytiharan Fungsi, yang mengembalikan hasil kosong dan membawa kepada pencetakan konsol "tidak ditentukan." Walau bagaimanapun, apabila fungsi ditakrifkan menggunakan (fungsi f() {}), ia dianggap sebagai Ungkapan Fungsi, yang menilai kepada fungsi itu sendiri dan dicetak sedemikian dalam konsol.

Atas ialah kandungan terperinci Mengapakah Mengisytiharkan Pembolehubah JavaScript di Konsol Menghasilkan \"undefined\"?. 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