執行上下文:一段javascript代碼執行前的準備工做
問題一:js引擎遇到怎樣一段代碼纔會作「準備工做呢」?
可執行代碼類型:全局代碼、函數代碼、eval代碼
執行上下文的三個重要概念 : 變量對象,做用域鏈,thisjavascript
問題二:準備工做是什麼?
準備工做就是執行上下文,函數聲明提高、變量聲明提高java
執行上下文棧閉包
模擬執行上下文棧 ,ECStack = [];
只有當整個應用程序結束時,ECS纔會被狀況,因此ECStack底部永遠有個globalContext, ECStask = [globalContex];函數
function f1 (){ console.log('fun1'); } function f2 (){ f1 (); } f2(); //僞代碼 ECStask.push(f2Context); ECStask.push(f1Context); ECStask.pop(f1Context); ECStask.pop(f2Context);
問題三:閉包的上下文執行棧是這麼存儲的this