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