调用init函数不理解

来源:3-4 domReady的实现

海贼王2015

2015-09-22 16:27

只执行一次用户的回调函数init()这一点不理解,

如下是老师的代码:

var init=function(){

   if(!done){

    done=true;

fn();

   }

 };

如果我把老师的代码改为如下:

var init=fn();

好像也不可能会出现fn()函数调用两次的情况对吗?会的朋友指教一下(求详细一点)谢谢谢谢


写回答 关注

2回答

  • joker_0042
    2015-10-19 17:38:07

    var init = fn();由于回调函数fn没有返回值,那么init存储的值为undefined;我想你的本意是想将init指向fn所指向的函数对象,然后在后面直接调用init(),对吧?如果是这样,那么对于onreadystatechange事件的处理程序和其前面()()结构中的语句会造成两次调用回调函数fn,而有了done条件判断,只要init调用一次,再次调用init就会失效,从而保证只调用一次回调函数fn。

    海贼王201...

    嗯嗯,谢谢你的回答,谢谢

    2015-10-19 20:37:56

    共 1 条回复 >

  • felix
    2015-09-23 09:54:14

    init=fn();
    是把fn的执行的返回值给了init,如果这样,就调用多次fn()了。
    结果成了调用fn()(),仔细看看,是不是这样。

DOM探索之基础详解篇

要知道前端大牛都是从精通DOM开始的,全面讲解DOM的基础知识

98372 学习 · 238 问题

查看课程

相似问题