我們接著昨天的遞迴繼續講述關於遞迴的執行上下文,以及堆疊。
現在,讓我們檢查一下遞迴呼叫是如何工作的。為此,我們將深入研究功能。
有關正在執行的功能的執行過程的資訊儲存在其執行上下文中。
執行上下文是乙個內部資料結構,它包含關於函式執行的詳細資訊:控制流現在的位置、當前變數、該變數的值(我們在這裡不使用它)和很少的其他內部細節
乙個函式呼叫只有乙個與之相關的執行上下文。
當乙個函式進行巢狀呼叫時,會發生以下情況:
讓我們看看pow(2,3)呼叫過程中發生了什麼。
在呼叫pow(2,3)的開始,執行上下文將儲存變數:x = 2, n = 3,執行流在函式的第1行。
我們可以把它概括為:
context: call: pow(2, 3)
這時函式開始執行,如果n == 1
是假的,所以流繼續進入if的第二個分支:
function pow(x, n) else {
re
堆疊上下文
什麼是堆疊順序 什麼是堆疊上下文 參考 只有定位元素才能實際上設定z index z index 0 存在兩種情況,取決於父元素的z index是否為auto background border 塊級浮動 內聯z index 0 z index 如果是兄弟元素重疊,那麼後面的蓋在前面的身上。可以理解...
提公升 執行上下文和執行上下文棧
提公升 1.變數宣告提公升 通過var定義 宣告 的變數,在之前就可以直接使用,但不會被賦值 值 undefined 2.函式宣告提公升 通過function宣告的函式,在之前就可以直接呼叫 函式表示式不能在定義前呼叫 值 函式定義 物件 3.問題 變數提公升和函式提公升怎麼產生的?變數提公升簡單理...
執行上下文
1.分類 位置 全域性 函式 區域性 2.全域性執行上下文 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 w...