預編譯讓你更好理解JS

2021-10-23 09:12:22 字數 1090 閱讀 3519

面試題注意事項

預編譯就是在執行**前js引擎對整篇js**var和function關鍵字宣告的變數進行宣告提前

語法分析:基本的語法錯誤,例如中文,變數命名規範等低階錯誤

預編譯:把**按照一定的規則,放到go和ao中

解釋執行:任何的方法和語句全部會被轉換成物件,go(global object),ao(active object)

進入script標籤中,在執行**前的一瞬間,先生成乙個go物件

var關鍵字宣告的變數進行提公升,變數名為go物件的屬性名, 值為undefined

function關鍵字宣告的函式進行提公升,函式名為go物件的屬性名, 值為函式體, 如果遇到同名( 變數名), 直接覆蓋( 函式體去覆蓋屬性值)

函式在執行前的一瞬間,生成乙個ao物件

var關鍵字宣告的變數進行提公升,變數名為go物件的屬性名, 值為undefined

形參名為go物件的屬性名,值為實參,如果遇到同名( 變數名), 直接覆蓋

function關鍵字宣告的函式進行提公升,函式名為go物件的屬性名, 值為函式體, 如果遇到同名( 變數名), 直接覆蓋( 函式體去覆蓋屬性值)

回到頂部目錄

console.log(a);

var a = 12;

var foo = 1;

function fn()

console.log(foo);

}fn();

console.log(a);

看go物件
1.go=

2.go=3.

go=}4.(執行)

go=}(執行到第12行**,生成ao物件)

看ao物件
1.ao=

2.ao=3.

ao=4.ao

=5.(執行)生成ao物件

ao=

預編譯:碰到if判斷,for…除了function作用域之外的咱們都得正常分析

回到頂部目錄

js 預編譯原理簡單理解

js執行三部曲 1 語法解析 語義分析 通篇掃瞄檢視語法是否有誤。如少了或多了乙個括號 2 預編譯 3 釋放執行上下文 預編譯 預編譯會發生在函式執行的前一刻 預編譯過程有四步 1 生成乙個ao物件 activation object 執行期上下文 其實執行期上下文是函式執行時產生的儲存庫 作用域 ...

JS預編譯 函式預編譯和全域性預編譯

預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...

理解預編譯頭

所謂標頭檔案預編譯,就是把乙個工程 project 中使用的一些mfc標準標頭檔案 如windows.h afxwin.h 預先編譯,以後該工程編譯時,不再編譯這部分標頭檔案,僅僅使用預編譯的結果。這樣可以加快編譯速度,節省時間。一 預編譯標頭檔案說明 所謂標頭檔案預編譯,就是把乙個工程 proje...