Rumah > Soal Jawab > teks badan
Definasi fungsi panggil balik adalah untuk menghantar fungsi b sebagai parameter kepada a untuk pelaksanaan Pada masa ini, b ialah fungsi panggil balik tiba-tiba saya mempunyai soalan, apakah perbezaan antara ia dan memanggil b secara langsung dalam fungsi a.
Saya menulis demo sendiri
function a(){
b();
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
n++;
}
return n;
}
a(); //hello world
Ia akan mengambil masa kira-kira 3 saat untuk melihat hasil output, dan kemudian menulisnya semula dalam bentuk fungsi panggil balik
function a(callback){
callback.call(this);
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
}
console.log(1);
}
a(b); //hello world
Hasil keluaran hanya boleh dilihat selepas 3 saat
Saya telah menjumpai banyak artikel, yang semuanya menjelaskan bahawa apabila b dilaksanakan sebagai fungsi panggil balik fungsi a, ia tidak menghalang perlaksanaan biasa fungsi a , kaedah kedua hendaklah serta-merta Apabila ia mengeluarkan hello world, adakah ia kerana saya menggunakan fungsi panggil balik yang salah? Masih mengalami masalah untuk memahami?
淡淡烟草味2017-06-26 10:55:07
1. Tiada perbezaan dalam prestasi
2 Fungsi panggil balik diluluskan sebagai parameter, dan operasi lebih fleksibel Contohnya, anda boleh mentakrifkan fungsi c, yang boleh dijalankan
b(c), apabila anda jalankan fungsi dalam fungsi, Fleksibiliti pembolehubah hilang.
漂亮男人2017-06-26 10:55:07
Nah, anda salah faham, kesan panggilan adalah sama. Dan callback.call(this);
画蛇添足,跟 callback()
ini adalah sama.
Kelebihan panggilan balik ialah penyongsangan kebergantungan Anda boleh membiarkan panggilan c, d, e tanpa mengubah suai kod a...