海贼王2015
2015-09-22 16:27
只执行一次用户的回调函数init()这一点不理解,
如下是老师的代码:
var init=function(){
if(!done){
done=true;
fn();
}
};
如果我把老师的代码改为如下:
var init=fn();
好像也不可能会出现fn()函数调用两次的情况对吗?会的朋友指教一下(求详细一点)谢谢谢谢
var init = fn();由于回调函数fn没有返回值,那么init存储的值为undefined;我想你的本意是想将init指向fn所指向的函数对象,然后在后面直接调用init(),对吧?如果是这样,那么对于onreadystatechange事件的处理程序和其前面()()结构中的语句会造成两次调用回调函数fn,而有了done条件判断,只要init调用一次,再次调用init就会失效,从而保证只调用一次回调函数fn。
init=fn();
是把fn的执行的返回值给了init,如果这样,就调用多次fn()了。
结果成了调用fn()(),仔细看看,是不是这样。
DOM探索之基础详解篇
98372 学习 · 238 问题
相似问题