0

HTML 代码:

<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 人都可以在这里帮助我或指导我应该如何开始调试这段代码来理解它。

4

1 回答 1

0

好的,根据您的评论。当浏览器从传入的数据流中读取它时,您拥有的 Javascript 全部按顺序执行。话虽如此,第一个脚本标签中包含的所有 javascript 都将被执行。然后第二个脚本标签也将按顺序执行。

因此,现在您可以将其book.init()视为最后提供的要执行的 javascript 调用。

我在 jsfiddle 中尝试了你的 JS 代码,但无法让它工作检查This Fiddle以了解我的意思。

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

于 2013-05-13T05:12:32.343 回答