Mengapa Pengisytiharan Pembolehubah JavaScript di Konsol Menghasilkan "Tidak Ditakrifkan"
Apabila mengisytiharkan pembolehubah dalam konsol JavaScript menggunakan sintaks var a;, ia mencetak "undefined." Tingkah laku ini boleh mengejutkan dan sering ditangani dalam siaran Stack Overflow. Walau bagaimanapun, perbincangan ini gagal menjelaskan sepenuhnya mengapa ini berlaku.
Tingkah laku konsol adalah hasil langsung daripada cara JavaScript menilai ungkapan. Apabila menilai pernyataan var a;, JavaScript menganggapnya sebagai ungkapan sendiri dan mengembalikan hasilnya, yang sememangnya "tidak ditentukan."
Lebih membingungkan mengapa konsol juga mencetak "tidak ditentukan" apabila mengisytiharkan pembolehubah dengan nilai awal, seperti var a = 3. Yang mengejutkan, semua pernyataan pengisytiharan berubah dalam JavaScript (kedua-dua var dan fungsi) mengembalikan "tidak ditentukan" jika terdapat pernyataan lain dengan hasil "sebenar".
Sebagai contoh :
> var a = 3; undefined > var a = 3; a = 4; 4 > var a = 3; a = 4; var a = 5; function f() {}; 4
Tingkah laku ini berakar umbi dalam pernyataan eval, yang, menurut spesifikasi ECMAScript:
Penilaian var a = 4 penyataan kembali (biasa, kosong, kosong), yang memenuhi kriteria untuk mengembalikan "tidak ditentukan."
Walau bagaimanapun, eval juga menentukan bahawa jika nilai penyiapan program yang dinilai tidak kosong, maka nilai penyata terakhir dikembalikan. Dalam contoh terakhir, a = 4 ialah pernyataan terakhir, jadi nilainya (4) dikembalikan.
Ringkasnya, konsol JavaScript mencetak "tidak ditentukan" untuk pengisytiharan berubah kerana pengisytiharan ini mengembalikan "tidak ditentukan" apabila dinilai sebagai ungkapan. Tingkah laku ini boleh mengelirukan, terutamanya apabila memberikan nilai awal kepada pembolehubah, tetapi ia berpunca daripada mekanisme penilaian asas ungkapan dan pernyataan JavaScript.
Atas ialah kandungan terperinci Mengapakah Pengisytiharan Pembolehubah Konsol JavaScript Menghasilkan \'Tidak Ditakrifkan\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!