2013-05-13 34 views
0

HTML代码:DOM onLoad事件没有jQuery的

<html> 
    <head> 
    </head> 
    <body> 
     <script type="text/javascript" src="/js/colorbook.js"></script> 
     <script type="text/javascript"> 
      book.init(); 
     </script> 
    </body> 
</html> 

JS代码:

var book = (function(){ 
    init = function(){ 
    console.log ("initialized") 
    }return init(); 
}()); 

问题:上面的代码工作。但我无法理解如何?任何JS的人可以帮我在这里或指导我如何开始调试这个代码来理解它。

+0

嗯,你究竟为什么困惑了,js是如何执行的或为什么这个特定的函数语义有效? – Nomad101 2013-05-13 04:35:17

+0

@ Nomad101:如果你能帮我解决这两个问题,那将会很棒。 – buildingagent 2013-05-13 04:43:05

+0

是JS代码位于您引用的JS文件中的唯一代码吗? – Nomad101 2013-05-13 04:55:01

回答

0

好的,以便根据您的意见。当浏览器从传入的数据流中读取它时,您在那里的Javascript全部按顺序执行。也就是说,第一个脚本标签中包含的所有JavaScript都将被执行。然后,第二个脚本标签也将按顺序执行。

所以现在你可以看看book.init()是最后提供的JavaScript调用来执行。

我试过你在jsfiddle中的JS代码,无法让它工作检查This Fiddle看看我的意思。

您的JS代码中发生的事情是var book声明末尾的最后()执行匿名函数,该函数会将该行打印到控制台。但是,从您提供book变量的代码永远不会得到book.init()方法。所以一旦这个调用到达,它会抛出一个未定义的错误。