調(diào)用init函數(shù)不理解
只執(zhí)行一次用戶的回調(diào)函數(shù)init()這一點(diǎn)不理解,
如下是老師的代碼:
var init=function(){
? ?if(!done){
? ? done=true;
fn();
? ?}
?};
如果我把老師的代碼改為如下:
var init=fn();
好像也不可能會(huì)出現(xiàn)fn()函數(shù)調(diào)用兩次的情況對(duì)嗎?會(huì)的朋友指教一下(求詳細(xì)一點(diǎn))謝謝謝謝
2015-10-19
var init = fn();由于回調(diào)函數(shù)fn沒(méi)有返回值,那么init存儲(chǔ)的值為undefined;我想你的本意是想將init指向fn所指向的函數(shù)對(duì)象,然后在后面直接調(diào)用init(),對(duì)吧?如果是這樣,那么對(duì)于onreadystatechange事件的處理程序和其前面()()結(jié)構(gòu)中的語(yǔ)句會(huì)造成兩次調(diào)用回調(diào)函數(shù)fn,而有了done條件判斷,只要init調(diào)用一次,再次調(diào)用init就會(huì)失效,從而保證只調(diào)用一次回調(diào)函數(shù)fn。
2015-09-23
init=fn();
是把fn的執(zhí)行的返回值給了init,如果這樣,就調(diào)用多次fn()了。
結(jié)果成了調(diào)用fn()(),仔細(xì)看看,是不是這樣。