<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 執行上下文棧 每次當控制器轉到可執行代碼的時候,就會進入一個執行上下文。執行上下文可以理解為當前代碼的執行環境,它會形成一個作用域。JavaScript中的運行環境大概包括三種情況。 * 全局環境:JavaScript代碼運行起來會首先進入該環境 * 函數環境:當函數被調用執行時,會進入當前函數中執行代碼 * eval 因此在一個JavaScript程序中,必定會產生多個執行上下文,JavaScript引擎會以堆棧的方式來處理它們。棧底永遠都是全局上下文,而棧頂就是當前正在執行的上下文。 當代碼在執行過程中,遇到以上三種情況,都會生成一個執行上下文,放入棧中,而處于棧頂的上下文執行完畢之后,就會自動出棧。 ~~~ var color = 'blue'; function changeColor() { var anotherColor = 'red'; function swapColors() { var tempColor = anotherColor; anotherColor = color; color = tempColor; } swapColors(); } changeColor(); ~~~ 全局上下文在瀏覽器窗口關閉后出棧。 > 注意:函數中,遇到return能直接終止可執行代碼的執行,因此會直接將當前上下文彈出棧。 ![](https://upload-images.jianshu.io/upload_images/599584-58d31e5b80737ca0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 詳細了解了這個過程之后,我們就可以對執行上下文總結一些結論了。 * 單線程 * 同步執行,只有棧頂的上下文處于執行中,其他上下文需要等待 * 全局上下文只有唯一的一個,它在瀏覽器關閉時出棧 * 函數的執行上下文的個數沒有限制 * 每次某個函數被調用,就會有個新的執行上下文為其創建,即使是調用的自身函數,也是如此。 ## 執行上下文的生命周期 當調用一個函數時(激活),一個新的執行上下文就會被創建。而一個執行上下文的生命周期可以分為兩個階段。 * 創建階段 在這個階段中,執行上下文會分別創建變量對象,建立作用域鏈,以及確定this的指向 * 代碼執行階段 創建完成之后,就會開始執行代碼,這個時候,會完成變量賦值,函數引用,以及執行其他代碼。 ![](https://box.kancloud.cn/d226cbb545d555ee19b5c2ef608064ff_1000x290.png) # 參考資料 * [JS執行上下文(執行環境)詳細圖解](https://www.cnblogs.com/lsgxeva/p/7976026.html)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看