作為剛實習半年的菜鳥來說,一直以來都覺得在五花八門的軟件行業必須要有自己的立場,我一直堅持將一門語言學精,同時注重算法內功,內外兼修,方可修成正果。最近項目做完閑來無事,想到做項目的時候JS用的多但是自己不是很會用,於是網上買了本一千多頁都書,每天花將近16個小時來看它。雖然之前有過Java和.net的基礎,但我覺得,從頭開始學,注重細節,才能將其學好。
看書的同時,也在網上找Jquery的資料,個人覺得jQuery不僅是一個很好的框架,同時也是一個做的很好的JS項目,通過參考其源碼,不僅可以加深對JS的理解,同時也可以學習jQuery。兩得,豈不是很爽。
昨天書上看到jQuery的頁面加載事件,於是將其和window.onload作了個對比,雖然后來發現了別人早就在自己的書上寫了這些東西,只是我自己沒有看到,不過畢竟是自己發現的,和在書上看到的自然當時的心情是不一樣的。
昨天上篇講到了window.onload事件和$()(或$(document).ready())事件的執行順序和執行數量
- window.onload事件在頁面加載完全的時候才執行
- $()在頁面框架搭好之后執行
今天又看到JS的命名空間看到這樣的代碼
( function() { }()); //函數定義結束並調用它
於是寫了下面的測試代碼
( function() { alert("OK"); }());
頁面加載的時候,代碼運行如下:
那么這個是否也是一個頁面加載事件呢,於是我將其和昨天的代碼作了對比,例如:
window.onload = function() { console.log("---33---"); } window.onload = function() { console.log("---33---"); } $(function() { console.log("---11---"); }); $(function() { console.log("---121---"); }); ( function() { console.log("---22---"); }()); ( function() { console.log("---222---"); }());
運行結果出乎我的意料:
(function() {}());居然比$()還要快。我又看了jQuery的源碼發現居然和(function() {}());是一樣的。
(function( window, undefined ) //省略中間代碼 )( window );
於是我得出結論,JS是會在頁面加載的時候會加載所有的代碼,在聲明函數的時候調用自己,會立即執行。
對於JS的在瀏覽器中的運行,我還會繼續研究...