2013-05-13 89 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()方法。所以一旦這個調用到達,它會拋出一個未定義的錯誤。