[從jQuery看JavaScript]-JavaScript

  什麼是JavaScript?相信隨便百度Google一下都能找到一大堆的定義解釋。而在我的理解中,JavaScript就是一種客戶端的腳本語言,用於處理頁面數據邏輯和用戶體驗(網頁特效)。實際上,JavaScript並不僅僅只能用於客戶端,它還能用於服務器端編程,典型的例子就是Mozilla Rhino。Mozilla Rhino是一個純Java的開源的JavaScript實現,它只是對JavaScript核心語法的編譯實現,並沒有對HTML對象的處理等功能(這不是當然的嘛……)。而我學習整理的範圍只是瀏覽器端中的JavaScript,所以這裏就表過不提了。對Mozilla Rhino有興趣的同學可以點擊這裏。類似的JavaScript引擎還有Mozilla SpiderMonkey(C語言實現)和DMDScript(D語言實現)等。

 

  就瀏覽器端的JavaScript引擎來說,也是分了好幾類的,例如Microsoft的叫JScript,Netscape的叫JavaScript(換句話說,Netscape纔是JS的鼻祖——作者乃是Netscape的Brendan Eich),Google的叫V8(也就是Chrome的JS引擎),還有蘋果的WebKit。這麼多的引擎,就會帶來許多不同的標準,這就導致我們現在的Web前端開發時所遇到的窘境——JS不是對每一個瀏覽器都適用。爲此,早在JavaScript誕生初期,Netscape就將其提交給ECMA(歐洲計算機制造商協會)進行標準化工作,所以現今的JavaScript引擎基本都遵從ECMA-262規範。儘管他們都遵從ECMA-262規範,但各個廠商還是對自己的JavaScript引擎作了自己的擴展和修改。這些不規範的擴展和修改最終引發了強烈的整合需求,於是一個又一個JS函數庫就出現了,jQuery也是其中之一。

 

  如前所述,JavaScript是一種腳本語言,它不需要在服務器端編譯,而是在發送到客戶端後,由瀏覽器解釋執行。因此,它是一種解釋語言。對於解釋語言來說,源代碼是一邊讀取一邊執行的,而當執行遇到錯誤的時候,錯誤語句之後的腳本都將會被停止執行。而且,瀏覽器並不會保留運行結果,所以每次打開同一頁面,其頁面上的JS都將重新運行一遍(雖然源文件可以通過設置頭信息緩存),這是JS一個先天的性能問題。還需要注意的是,瀏覽器解釋HTML文檔時,JS的引入也是按順序解釋執行的。所以,若是引入的JS腳本之間如果有依賴的話,執行依賴方法的語句必須要在實現方法語句之後。另外,各瀏覽器的DOM生成順序也是不同的,所以如果有需要執行的JS腳本需要調用DOM對象的話,最好是放到onload之類的函數中。而對於直接寫在頁面上的函數,也可以在引入標籤上加上defer屬性(IE5或FF3.5或以上版本才能支持),暫緩其執行。還有就是,直接寫在頁面上的JS腳本,最好在都括在<!—和//—>中。這是爲了防止低版本瀏覽器錯誤解釋代碼用的。

 

  前面提到過JS函數庫誕生的歷史背景,那麼這些函數庫到底做的是什麼呢?顧名思義,它們就是整合了各種常用功能的實現函數,並處理了各瀏覽器上的差異性,經過精煉的智慧結晶。下面,就讓我們開始從jQuery這個函數庫源碼中體驗JavaScript腳本語言之旅吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章