javascript
浏览器解析JavaScript的原理
JavaScript的特點一般都知道的就是解釋執行,逐行執行,就是從上到下依次執行。
JavaScript的執行之前,其實還是有一些操作的,只是沒有表現出來
JavaScript的執行過程:
1、語法檢測 首先是大致查看有沒有基本的語法錯誤。比如說中文、關鍵字錯誤等等
2、詞法分析(預編譯)
3、逐行執行
預編譯的過程
1、先全局 直接是 script 標簽里的代碼,函數除外
預編譯時
1、先模擬一個GO(global object) = { };
2、分析變量聲明(var) 若有則:GO = {變量名1:undefined,變量名2:undefined,……};若遇到同名的就覆蓋
3、分析函數聲明(function) 若有則:GO = {變量名1:undefined,變量名2:undefined,……,函數名1:函數體1,函數名2:函數體2,……};若遇到同名的就覆蓋
4、逐行執行 有賦值就賦值到GO里相應的屬性
2、再局部 在逐行執行時 若遇到函數調用,該函數會生成自己的作用域AO(active object) = { }
1、模擬一個AO = { }
2、分析參數 若有則:AO = {形參 1: 實參1,形參 2: 實參2,…… }
3、分析變量聲明 若有則:AO = {形參 1: 實參1,形參 2: 實參2,…… 變量名1:undefined,變量名2:undefined,……};若遇到同名的就跳過
4、分析函數聲明 若有則:AO = {形參 1: 實參1,形參 2: 實參2,…… 變量名1:undefined,變量名2:undefined,……,函數名1:函數體1,函數名2:函數體2,……};若遇到同名的就覆蓋
5、逐行執行 有賦值就賦值到AO相應的屬性,若遇到AO里沒有的要賦值的,就向上一級找,一直找到GO,若GO沒有,就添加到GO。
基礎步驟就是這,一步一步的來,就沒有什么大問題。
?
?
?
?
突然想到這個問題,然后找了一下,覺得介紹的比較通俗易懂----------------------------------》傳送陣:https://www.cnblogs.com/long-z/p/10136657.html
轉載于:https://www.cnblogs.com/jockr/p/11131071.html
總結
以上是生活随笔為你收集整理的浏览器解析JavaScript的原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 立志10天学会C++基础应用—day01
- 下一篇: gradle idea java ssm