Rumah > Soal Jawab > teks badan
Kod berikut:
function a() {
console.log('1')
}
(function() {
console.log(a);
if(1) {
function a() {
console.log('2');
}
}
})()
Selepas berjalan, output tidak ditentukan.
Selepas mengalih keluar keadaan if, output adalah fungsi kedua
function a() {
console.log('1')
}
(function() {
console.log(a);
// if(1) {
function a() {
console.log(2);
}
// }
})()
Mengetahui bahawa fungsi itu dipertingkatkan, dalam sekeping kod kedua, fungsi kedua akan dinaikkan pangkat sebelum kod console.log(a), jadi fungsi kedua dijalankan dan dikeluarkan.
Tetapi dalam sekeping kod pertama, saya tidak faham mengapa undefined dikeluarkan.
代言2017-06-12 09:32:06
Pengisytiharan fungsi bersyarat diproses dengan cara yang sama seperti ungkapan fungsi. Oleh itu, pengisytiharan fungsi bersyarat kehilangan sifat angkat pengisytiharan fungsi.
URL Rujukan: /q/10...
怪我咯2017-06-12 09:32:06
Apabila menggunakan kata kunci fungsi dalam pernyataan if else untuk mengisytiharkan fungsi, promosi pembolehubah adalah berbeza dalam pelayar yang berbeza. Cuma pengisytiharan pembolehubah dipromosikan di sini, dan jika lain dialih keluar, ia menjadi skop fungsi tulen.
function a() {
console.log('1')
}
(function() {
var a;
console.log(a);
if(1) {
a = function a() {
console.log('2');
}
}
})()
学习ing2017-06-12 09:32:06
Dalam IIFE anda
if(1) {
a = function a() {
console.log('2')
}
}
ialah ungkapan fungsi, bukan pengisytiharan fungsi Apabila if dialih keluar, ia adalah pengisytiharan fungsi Jika tidak dialih keluar, conosle.log(a), a mewakili pembolehubah tidak ditentukan a, rujuk https://developer. mozilla.org ..