面試題注意事項
預編譯就是在執行**前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...