Rumah > Soal Jawab > teks badan
1. Saya tidak memahami perintah pelaksanaan js. Jalankan kod berikut Apabila amaran dimulakan, a tidak sepatutnya dilaporkan secara langsung. Mengapakah fungsi ini dipaparkan dahulu, kemudian 10, kemudian 3, dan akhirnya ralat dilaporkan? Bukankah kesilapan harus dilaporkan dari awal?
alert(a)
a();
var a=3;
function a(){
alert(10)
}
alert(a)
a=6;
a()
ringa_lee2017-06-26 11:00:23
Saya bertanya kepada rakan sekelas saya dan mengetahui mengapa itu berlaku Pertama sekali, kita perlu memahami konsep
1 Dalam js, pengisytiharan pembolehubah dan pengisytiharan fungsi dibuat lebih awal, dan pengisytiharan fungsi adalah lebih baik daripada pengisytiharan pembolehubah. Oleh itu, makluman(a) sebelum mengisytiharkan tidak akan melaporkan ralat. Juga, dalam amaran pertama, fungsi a muncul, bukan pembolehubah a.
2 Amaran kedua, tidak perlu dikatakan, hanya melaksanakan fungsi a.
3 Makluman ketiga, hasilnya ialah 3, kerana var a=3;
telah dilaksanakan sebelum dijalankan di sini. Jadi a menjadi 3. var a=3;
。所以a变成了3。
4.最后报错是因为,执行到a();a进行了两次赋值,第一次是var a=3;
,第二次是a=6;
4 Ralat terakhir telah dilaporkan kerana a(); a telah ditetapkan dua kali, kali pertama ialah var a=3;
, dan kali kedua ialah a=6;< /code. >, tetapi tidak kira apa, a bukan fungsi, jadi ralat dilaporkan.
伊谢尔伦2017-06-26 11:00:23
Output pertama function
是因为作用域提升(hoisting)。
第二个输出 10 是第二行 a()
的输出。
第三个输出 3 是倒数第三行 alert(a)
的输出。
最后一个报错是来自最后一行 a()
。因为这时候 a
被重新赋值为数字 6
,已经不是 function
了。执行 a()
sudah tentu akan melaporkan ralat.
某草草2017-06-26 11:00:23
Adakah pengisytiharan berubah dipromosikan?
http://zonxin.github.io/post/...