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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                在JS中,變量的定義并不是以代碼塊作為作用域的。而是以函數作為作用域。也就是說,如果變量是在某個函數中定義的,那么它在函數以外的地方是不可見的。 在JS總,全局變量指的是定義在所有函數之外的變量,局部變量則是定義在函數內的變量,函數內的代碼可以調用全局變量,反之則不行。 比如說: ``` >>> var global = 1; undefined >>> function f(){ ... var local = 2; ... global++; ... return global; ... } undefined >>> f(); 2 >>> f(); 3 >>> local; Exception: ReferenceError: Can't find variable: local ``` - 函數f()可以訪問變量global - 在函數f()以外,變量local是不存在的 如果我們聲明一個變量時沒有使用var語句,默認是全局變量 ``` >>> function f(){ ... local = 2; ... } undefined >>> local; Exception: ReferenceError: Can't find variable: local >>> f(); undefined >>> local; 2 ``` 在實際開發中: - 盡量將全局變量的數量減到最低,以避免命名沖突。如果有兩個人在同一段腳本的不同函數中使用了相同的全局變量名,就很容易導致不可預測的結果和難以察覺的bug。 - 最哈總是使用var語句來聲明變量 - 可以考慮使用“單一 var”模式,也就是在函數體內第一行使用var來定義這個作用域中的所需的變量 變量提升 ``` var a = 123; function f(){ alert(a); var a = 1; alert(a); } f(); ``` 第一次彈出undefined,第二次彈出1. 因為函數域使用優先于全局域,所以局部變量a會覆蓋所有與他同名的全局變量,盡管alert()第一次被調用時,a還沒有被正式定義,但該變量本身已經存在與本地空間了。這種特殊的現象我們叫做提升(hoisting)。 這個概念很重要,也就是說,當JS執行過程中進入新的函數時,這個函數內被聲明的所有變量都會被提升。 被提升的只有變量的聲明,與之相關的賦值操作并不會被提升。比如說剛才的demo中,局部變兩本書被提升到了函數最開始處,但并沒有在開始處就被賦值1。 上面的demo可以改成: ``` var a = 123; function f(){ var a; alert(a); var a = 1; alert(a); } f(); ```
                  <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>

                              哎呀哎呀视频在线观看