簡單而言,就是你把實現(xiàn)遞歸的模式給改了,傳統(tǒng)的實現(xiàn)是這樣的>1開始>---2開始>------3開始>------3結束>---2結束>1結束而的你實現(xiàn)改成了>1開始>1結束>---2開始>---2結束>------3開始>------3結束為什么會成這個樣,是因為onload這個事件的觸發(fā),onload事件觸發(fā)是在加載圖片完成后才執(zhí)行的。也就是“1開始”后執(zhí)行時并不會馬上觸發(fā)“2開始”的相關邏輯,而是要等待圖片加載完成后,才會觸發(fā)“2開始”,而這時在等待圖片加載時,“1結束”部分已經執(zhí)行完畢functiondigui(opp){//開始console.log(opp+'start');imge.src="這里在網上必須有一個圖片的鏈接地址不然測試不出來";imge.onload=function(){opp++;if(oppconsole.log("第一層"+opp);digui(opp);}console.log(opp);}//結束console.log(opp+'end');}digui(opp);而基于樓上@jsven的回答varopp=0;functiondigui(opp){console.log(opp+'start');opp++;if(opp<8){digui(opp);}console.log(opp);console.log(opp+'end');}digui(opp);從這2個執(zhí)行結果中,可以看出,同步執(zhí)行時確實是傳統(tǒng)遞歸執(zhí)行,而在異步時,根本就不是傳統(tǒng)遞歸執(zhí)行。