Dalam artikel sebelumnya "Artikel yang menerangkan masalah penunjuk ini dalam js (dengan kod) ", saya memperkenalkan anda kepada masalah penunjuk ini dalam js. Artikel berikut akan memberi anda penjelasan terperinci tentang fungsi panggil balik dalam js Rakan, lihat.
Fungsi panggil balik JS
Apakah fungsi panggil balik , penjelasan rasmi : Apabila program berjalan, dalam keadaan biasa, program aplikasi akan sering memanggil fungsi yang telah disediakan dalam perpustakaan melalui API. Walau bagaimanapun, sesetengah fungsi pustaka memerlukan aplikasi untuk lulus fungsi itu terlebih dahulu, supaya ia boleh dipanggil pada masa yang sesuai untuk menyelesaikan tugas sasaran. Fungsi yang dihantar dan dipanggil kemudian dipanggil fungsi panggil balik.
biasanya menghantar fungsi B
ke fungsi lain A
, dan kemudian memanggil fungsi A apabila diperlukan.
Secara terang-terangan, panggil balik ialah jejak balik Mula-mula tentukan badan fungsi yang akan digunakan, dan kemudian panggil fungsi ini selepas digunakan Kami biasanya menghantar callback
sebagai parameter ke dalam fungsi yang ditakrifkan dahulu. Mari kita lihat sekeping kod jquery
:
$("p").hide(1000,function(){ alert("The paragraph is now hidden"); });
Jquery di atas ialah fungsi panggil balik Mula-mula, selepas melaksanakan kesan hide
, ia kemudian memanggil fungsi panggil balik function
.
Mari kita lihat sekeping kod JS sekali lagi untuk melihat bagaimana fungsi panggil balik dilaksanakan:
function Buy(name,goods1,callback) { alert(name+' buy '+goods1); if(callback&&typeof(callback)==="function") callback(); } Buy('xiaoming','apple',function(){ alert("shopping finish"); });
Kod yang sangat mudah Saya tidak tahu apa yang saya ingin beli di permulaan. Apabila saya membeli sesuatu, saya segera Untuk memanggil fungsi yang ditakrifkan sebelum ini, adalah lebih baik untuk menambah peraturan penghakiman, kerana premisnya ialah callback
mestilah fungsi, dan hasil keluarannya ialah:
xiaoming buy apple shopping finish
Penutupan dan panggil balik
Mari kita lihat soalan penutupan masing-masing. ujian di sini ialah penutupan,
ialah penutupan, dan fungsi tanpa nama ialah fungsi panggil balik, i ialah pembolehubah dalam penutupan. Apabila panggilan balikvar nodes = document.getElementsByTagName('button'); for (var i = 0; i < nodes.length; i++) { nodes[i].addEventListener('click', function() { console.log('You clicked element #' + i); }); }
dan addEventListener
ialah jumlah bilangan nod. Jadi hasilnya adalah addEventListener
node.length
node.length
Jadi bagaimana untuk menukar nilai pulangannya kepada fungsi Memandangkan nilai pembolehubah i akan dikeluarkan, maka kita akan memperkenalkan
You clicked element # node.length
i
Fungsi panggil balik PHP
var nodes = document.getElementsByTagName('button'); for (var i = 0; i < nodes.length; i++) { (function(i) { nodes[i].addEventListener('click', function () { console.log('You clicked element #' + i); }) })(i); }
php menjalankan pemprosesan panggilan balik untuk setiap elemen tatasusunan masuk Mari kita lihat penutupan PHP Gunakan kata kunci
untuk mewarisi pembolehubah di luar skop:<?php $array=array(1,2,3,4); array_walk($array,function($value){ echo $value;}); ?>
. use
Hasil pulangan ialah:
<?php function getcouter(){ $i=0 return function() use($i)( echo $i; )}; } $counter=getcounter(); echo $counter(); echo $counter(); ?>
Kaedah penggunaan PHP rasmi
1,1
Malah, dari segi prinsip, JS dan PHP adalah serupa, kedua-duanya mentakrifkan fungsi terlebih dahulu. dan kemudian perlu Panggil sahaja apabila tiba masanya.
class hello { function callback($a,$b) { echo "$a,$b"; } static function callback($c,$d){ echo "$c,$d"; } } //将类名作为参数 call_user_func(array('hello','callback'),"hello","world"); //输出 hello,world //将对象作为参数 call_user_func(array(new hello(),'callback'),"hello","world"); //将静态方法作为参数 call_user_func(hello::callback,"hello","world"); //输出 hello,world
Tutorial video JS
Atas ialah kandungan terperinci Analisis mendalam fungsi panggil balik dalam js (perkongsian penjelasan terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!