本文實(shí)例講述了javascript中函數(shù)作為參數(shù)調(diào)用的方法。分享給大家供大家參考。具體分析如下:
先來(lái)看示例:
function Map(){var obj = {};this.put = function(key, value){obj[key] = value;}this.eachMap = function(fn){for(var attr in obj){fn(attr, obj[attr]);}}}var m = new Map();m.put('01', 'abc');m.put('02', 1024);m.put('03', true);m.put('04', 0);m.put('05', false);m.eachMap(function(key, value){alert(key + " : " + value);});這段代碼執(zhí)行的順序是:從上往下順序解釋執(zhí)行,這是JS的規(guī)定。
這里主要說(shuō)明一下m.eachMap()中函數(shù)做為參數(shù)是怎么傳遞并執(zhí)行的:
step1:執(zhí)行到m.eachMap這個(gè)方法的時(shí)候,JS會(huì)去找對(duì)應(yīng)的this.eachMap這個(gè)方法;
step2:找到this.eachMap這個(gè)方法,會(huì)根據(jù)函數(shù)體內(nèi)的語(yǔ)句順序執(zhí)行;
step3:當(dāng)執(zhí)行到fn(attr, obj[attr]);的時(shí)候,他會(huì)返回到for語(yǔ)句執(zhí)行;注意在返回for語(yǔ)句執(zhí)行之前,attr是沒(méi)有值的;從for語(yǔ)句返回之后,attr的值就有了,為‘01',而obj[attr]的值也有了,為‘a(chǎn)bc';
step4:接著,fn(attr, obj[attr]);會(huì)返回到m.eachMap這個(gè)方法的參數(shù)函數(shù)中,即
function(key, value){alert(key + " : " + value);}attr替換key,obj[attr]替換value,并執(zhí)行alert語(yǔ)句,輸出。
step5:繼續(xù)執(zhí)行for循環(huán),重復(fù)執(zhí)行step4,并輸出,直到結(jié)束。
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注