js高端系列教程(整理版).doc

js高端系列教程(整理版).doc

ID:50369620

大?。?44.50 KB

頁數(shù):95頁

時間:2020-03-08

js高端系列教程(整理版).doc_第1頁
js高端系列教程(整理版).doc_第2頁
js高端系列教程(整理版).doc_第3頁
js高端系列教程(整理版).doc_第4頁
js高端系列教程(整理版).doc_第5頁
資源描述:

《js高端系列教程(整理版).doc》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫

1、js高端系列教程(1)——我們應該如何去了解JavaScript引擎的工作原理昨天收到一封來自深圳的一位前端童鞋的郵件,郵件內容如下(很抱歉,未經(jīng)過他的允許,公開郵件內容,不過我相信其他人肯定也有同樣的問題,所以,直接把問題原文拋出來):“讀了你的幾篇關于JS(變量對象、作用域、上下文、執(zhí)行代碼)的文章,我個人覺得有點抽象,難以深刻理解。我想請教下通過什么途徑能夠深入點的了解javascript解析引擎在執(zhí)行代碼前后是怎么工作的,ecma英文版實在看不下去呵呵?!逼鋵嵾@個問題個人覺得太籠統(tǒng)了,直接回答很難回答,所以,我

2、打算先把他的問題拆解成如下幾個子問題,并對其表達個人的觀點,希望對有同樣困惑的童鞋能夠有所幫助。1.什么是JavaScript解析引擎?簡單地說,JavaScript解析引擎就是能夠“讀懂”JavaScript代碼,并準確地給出代碼運行結果的一段程序。比方說,當你寫了?vara=1+1;?這樣一段代碼,JavaScript引擎做的事情就是看懂(解析)你這段代碼,并且將a的值變?yōu)?。學過編譯原理的人都知道,對于靜態(tài)語言來說(如Java、C++、C),處理上述這些事情的叫編譯器(Compiler),相應地對于JavaScr

3、ipt這樣的動態(tài)語言則叫解釋器(Interpreter)。這兩者的區(qū)別用一句話來概括就是:編譯器是將源代碼編譯為另外一種代碼(比如機器碼,或者字節(jié)碼),而解釋器是直接解析并將代碼運行結果輸出。比方說,firebug的console就是一個JavaScript的解釋器。但是,現(xiàn)在很難去界定說,JavaScript引擎它到底算是個解釋器還是個編譯器,因為,比如像V8(Chrome的JS引擎),它其實為了提高JS的運行性能,在運行之前會先將JS編譯為本地的機器碼(nativemachinecode),然后再去執(zhí)行機器碼(這樣

4、速度就快很多),相信大家對JIT(JustInTimeCompilation)一定不陌生吧。我個人認為,不需要過分去強調JavaScript解析引擎到底是什么,了解它究竟做了什么事情我個人認為就可以了。對于編譯器或者解釋器究竟是如何看懂代碼的,翻出大學編譯課的教材就可以了。這里還要強調的就是,JavaScript引擎本身也是程序,代碼編寫而成。比如V8就是用C/C++寫的。2.JavaScript解析引擎與ECMAScript是什么關系?JavaScript引擎是一段程序,我們寫的JavaScript代碼也是程序,如何

5、讓程序去讀懂程序呢?這就需要定義規(guī)則。比如,之前提到的vara=1+1;,它表示:·左邊var代表了這是申明(declaration),它申明了a這個變量·右邊的+表示要將1和1做加法·中間的等號表示了這是個賦值語句·最后的分號表示這句語句結束了上述這些就是規(guī)則,有了它就等于有了衡量的標準,JavaScript引擎就可以根據(jù)這個標準去解析JavaScript代碼了。那么這里的ECMAScript就是定義了這些規(guī)則。其中ECMAScript262這份文檔,就是對JavaScript這門語言定義了一整套完整的標準。其中包括

6、:·var,if,else,break,continue等是JavaScript的關鍵詞·abstract,int,long等是JavaScript保留詞·怎么樣算是數(shù)字、怎么樣算是字符串等等·定義了操作符(+,-,>,<等)·定義了JavaScript的語法·定義了對表達式,語句等標準的處理算法,比如遇到==該如何處理·??標準的JavaScript引擎就會根據(jù)這套文檔去實現(xiàn),注意這里強調了標準,因為也有不按照標準來實現(xiàn)的,比如IE的JS引擎。這也是為什么JavaScript會有兼容性的問題。至于為什么IE的JS引擎

7、不按照標準來實現(xiàn),就要說到瀏覽器大戰(zhàn)了,這里就不贅述了,自行Google之。所以,簡單的說,ECMAScript定義了語言的標準,JavaScript引擎根據(jù)它來實現(xiàn),這就是兩者的關系。3.JavaScript解析引擎與瀏覽器又是什么關系?簡單地說,JavaScript引擎是瀏覽器的組成部分之一。因為瀏覽器還要做很多別的事情,比如解析頁面、渲染頁面、Cookie管理、歷史記錄等等。那么,既然是組成部分,因此一般情況下JavaScript引擎都是瀏覽器開發(fā)商自行開發(fā)的。比如:IE9的Chakra、Firefox的Trac

8、eMonkey、Chrome的V8等等。從而也看出,不同瀏覽器都采用了不同的JavaScript引擎。因此,我們只能說要深入了解哪個JavaScript引擎。4.深入了解其內部原理的途徑有哪些?搞清楚了前面三個問題,那這個問題就好回答了。個人認為,主要途徑有如下幾種(依次由淺入深):·看講JavaScript引擎工作原理的書這種方

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現(xiàn)內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。