<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### JS的預處理階段 上述將的是解釋器的整體過程,這里再提下在正式執行JS前,還會有一個預處理階段 (譬如變量提升,分號補全等) 預處理階段會做一些事情,確保JS可以正確執行,這里僅提部分: #### 分號補全 JS執行是需要分號的,但為什么以下語句卻可以正常運行呢? ``` console.log('a') console.log('b') ``` 原因就是JS解釋器有一個 [Semicolon Insertion](http://inimino.org/~inimino/blog/javascript_semicolons) 規則,它會按照一定規則,在適當的位置補充分號 譬如列舉幾條自動加分號的規則: - 當有換行符(包括含有換行符的多行注釋),并且下一個 `token` 沒法跟前面的語法匹配時,會自動補分號。 - 當有 `}` 時,如果缺少分號,會補分號。 - 程序源代碼結束時,如果缺少分號,會補分號。 于是,上述的代碼就變成了 ``` console.log('a'); console.log('b'); ``` 所以可以正常運行 當然了,這里有一個經典的例子: ``` function b() { return { a: 'a' }; } ``` 由于分號補全機制,所以它變成了: ``` function b() { return; { a: 'a' }; } ``` 所以運行后是`undefined` #### 變量提升 一般包括函數提升和變量提升 譬如: ``` a = 1; b(); function b() { console.log('b'); } var a; ``` 經過變量提升后,就變成: ``` function b() { console.log('b'); } var a; a = 1; b(); ``` 這里沒有展開,其實展開也可以牽涉到很多內容的 譬如可以提下變量聲明,函數聲明,形參,實參的優先級順序,以及es6中let有關的臨時死區等
                  <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>

                              哎呀哎呀视频在线观看