亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

JS回調函數原理與用法詳解【附PHP回調函數】

2019-11-19 11:09:37
字體:
來源:轉載
供稿:網友

本文實例講述了JS回調函數原理與用法。分享給大家供大家參考,具體如下:

JS回調函數

何為回調函數,官方解釋:當程序跑起來時,一般情況下,應用程序(application program)會時常通過API調用庫里所預先備好的函數。但是有些庫函數(library function)卻要求應用先傳給它一個函數,好在合適的時候調用,以完成目標任務。這個被傳入的、后又被調用的函數就稱為回調函數(callback function)。

通常將一個函數B傳入另一個函數A,并且在需要的時候再調用函數A。

說白了,回調就是回溯,先定義好將要使用的函數體,然后在使用使再調用這個函數,我們通常把callback作為一個參數傳入先定義的那個函數。下面我們先來看一段jquery代碼:

$("p").hide(1000,function(){alert("The paragraph is now hidden");});

上面jquery就是一個回調函數,首先它在執行完hide效果后,接著調用function回調函數。

我們再來看一段JS代碼,看看回調函數是如何實現的:

function Buy(name,goods1,callback) {  alert(name+' buy '+goods1);  if(callback&&typeof(callback)==="function")    callback();}Buy('xiaoming','apple',function(){  alert("shopping finish");});

一個很簡單的代碼,一開始不知道要買啥,等到買到東西,立即把之前定義好的函數調用出來,最好加上判斷規則,因為一切前提是callback必須是一個函數,輸出結果為:

xiaoming buy apple
shopping finish

閉包與回調

下面看一道閉包的題目,分別點擊第一個和第四個節點,執行結果:

var nodes = document.getElementsByTagName('button');for (var i = 0; i < nodes.length; i++) {  nodes[i].addEventListener('click', function() {    console.log('You clicked element #' + i);  });}

這里雖然主要考的是閉包,addEventListener是一個閉包,而匿名函數是一個回調函數,i是在閉包中的變量。在addEventListener的回調執行時,循環已經結束,此時的變量i被賦值為node.length,node.length為總節點數。所以結果就是

You clicked element # node.length

那要怎么改,將其返回值改成函數,既然i變量的值會被釋放,那我們就引入i,讓每次循環的值都保存在內存中,就可以了:

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回調函數

下面略說一下php中回調函數如何實現(結果為1,2,3,4):

<?php  $array=array(1,2,3,4);  array_walk($array,function($value){    echo $value;});?>

php對每個傳入的數組元素作回調處理,下面再看看php的閉包,使用use關鍵字繼承作用域外的變量:

<?php  function getcouter(){    $i=0    return function() use($i)(      echo $i;    )};  }  $counter=getcounter();  echo $counter();  echo $counter();?>

返回結果為:

1,1
1

官方php使用方法

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

其實就原理來說,JS和php都是差不多的,都是先定義好函數,然后需要的時候就調用過來。

更多關于JavaScript相關內容可查看本站專題:《JavaScript常用函數技巧匯總》、《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精彩免费视频| 中文字幕欧美日韩| 亚洲第一页在线| 久久久久久国产| 5278欧美一区二区三区| 欧美高清在线视频观看不卡| 亚洲欧美精品在线| 日韩精品免费综合视频在线播放| 国产日韩欧美电影在线观看| 久久久999国产精品| 欧美黑人xxxx| 亚洲一区二区中文字幕| 国内精品视频在线| 欧美黑人国产人伦爽爽爽| 国产一区私人高清影院| 久久久人成影片一区二区三区| 亚洲午夜久久久久久久| 亚洲自拍欧美色图| 国产欧美一区二区三区在线看| 欧美日韩国产在线播放| 都市激情亚洲色图| 国产在线精品一区免费香蕉| 欧美日韩国产在线播放| 中文字幕不卡av| 国产精品视频网址| 欧美大片在线影院| 亚洲精美色品网站| 一本一本久久a久久精品综合小说| 亚洲激情视频在线观看| 日韩av成人在线| 亚洲成人精品久久久| 久久亚洲影音av资源网| 国产精品久久久久999| 国产91精品久久久久久久| 97视频在线观看视频免费视频| 亚洲视频在线观看免费| 夜色77av精品影院| 亚洲欧美精品一区二区| 国产精品欧美日韩久久| 国产区精品视频| 国产精品美女久久久免费| 在线看日韩欧美| 8050国产精品久久久久久| 久久精品国产精品亚洲| 亚洲电影免费在线观看| 亚洲欧美精品suv| 成人av在线天堂| 亚洲自拍中文字幕| 国产精品免费一区豆花| 日韩精品视频观看| 日韩av免费在线播放| 亚洲欧美一区二区激情| **欧美日韩vr在线| 日韩欧美成人精品| 亚洲国产91色在线| 成人444kkkk在线观看| 日韩中文字幕在线看| 97成人在线视频| 日韩大陆毛片av| 久久影视电视剧免费网站清宫辞电视| 91国产精品视频在线| 亚洲欧美激情精品一区二区| 亚洲成人三级在线| 97色在线视频观看| 精品国产老师黑色丝袜高跟鞋| 欧美性xxxxxxxxx| 亚洲最大成人免费视频| 久久视频在线观看免费| 欧美又大又粗又长| 欧美激情视频在线免费观看 欧美视频免费一| 久久久日本电影| 国产日韩欧美中文在线播放| 精品爽片免费看久久| 成人性生交大片免费观看嘿嘿视频| 青青草99啪国产免费| 国产视频自拍一区| 欧美在线视频网站| 北条麻妃久久精品| 亚洲精品在线视频| 亚洲欧美制服丝袜| 精品视频久久久久久久| 精品久久久久久久久久久| 高清欧美性猛交xxxx黑人猛交| 欧美怡红院视频一区二区三区| 精品福利在线观看| 国产精品直播网红| 亚洲电影在线看| 日韩av在线网址| 成人www视频在线观看| 91亚洲精品一区二区| 亚洲综合av影视| 日韩在线观看精品| 亚洲性xxxx| 国产乱人伦真实精品视频| 日韩欧美福利视频| 国产午夜精品免费一区二区三区| 色偷偷偷综合中文字幕;dd| 日韩成人中文电影| 成人欧美一区二区三区黑人| 日韩精品极品在线观看| 国产一区二区久久精品| 国产男女猛烈无遮挡91| 亚洲成人久久久| 第一福利永久视频精品| 国产精品免费电影| 国产aⅴ夜夜欢一区二区三区| 日韩中文字幕在线播放| 国产成人精品免高潮在线观看| 欧美激情精品久久久久久久变态| 日韩精品在线视频| 在线观看欧美视频| 超碰97人人做人人爱少妇| 亚洲一区二区在线| 国产精品欧美一区二区三区奶水| 久久久久久亚洲精品中文字幕| 色综合色综合久久综合频道88| 国内成人精品一区| 久久久精品久久久| 国产精品久久久久久久久久久久| 亚洲福利在线观看| 亚洲国产成人在线播放| 日本高清视频精品| 色系列之999| 97精品一区二区三区| 成人网在线视频| 久久av资源网站| 38少妇精品导航| 成人啪啪免费看| 日韩中文字幕精品| 欧美在线影院在线视频| 国产欧美最新羞羞视频在线观看| 国产精品久久久久久久久久免费| 久久成人精品电影| 精品无人区太爽高潮在线播放| 成人做爰www免费看视频网站| 久久久久免费视频| 国产成人激情小视频| 国产69精品久久久久99| 国产精品99久久久久久白浆小说| 国产一区二区在线免费| 久久久久久综合网天天| 国产成人精品国内自产拍免费看| 亚洲精品98久久久久久中文字幕| 国内精品视频一区| 国自产精品手机在线观看视频| 精品久久久国产| 欧美性理论片在线观看片免费| 欧美裸体xxxx极品少妇软件| 国产精品视频成人| 韩国欧美亚洲国产| 91精品国产乱码久久久久久久久| 日韩福利伦理影院免费| 久久久精品欧美| 国产精品欧美一区二区三区奶水| 亚洲新中文字幕| 日本不卡免费高清视频| 日韩毛片在线观看| 欧美电影在线免费观看网站| 久久精品精品电影网| 国产日韩在线观看av| 欧美高清视频在线观看| 亚洲片av在线| 国产免费一区二区三区在线观看| 日韩亚洲国产中文字幕|