<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之旅 廣告
                [TOC] # 作用域 作用域是指程序源代碼中定義變量的區域。 <br> 作用域規定了如何查找變量,也就是確定當前執行代碼對變量的訪問權限。 <br> JavaScript 采用詞法作用域(lexical scoping),也就是靜態作用域。 <br> <br> # 靜態作用域與動態作用域 因為 JavaScript 采用的是詞法作用域,函數的作用域在函數定義的時候就決定了。 <br> 而與詞法作用域相對的是動態作用域,函數的作用域是在函數調用的時候才決定的。 <br> 讓我們認真看個例子就能明白之間的區別: ~~~js var value = 1; function foo() { console.log(value); } function bar() { var value = 2; foo(); } bar(); // 結果是 ??? ~~~ <br> 假設JavaScript采用靜態作用域,讓我們分析下執行過程: <br> 執行 foo 函數,先從 foo 函數內部查找是否有局部變量 value,如果沒有,就根據書寫的位置,查找上面一層的代碼,也就是 value 等于 1,所以結果會打印 1。 <br> 假設JavaScript采用動態作用域,讓我們分析下執行過程: <br> 執行 foo 函數,依然是從 foo 函數內部查找是否有局部變量 value。如果沒有,就從調用函數的作用域,也就是 bar 函數內部查找 value 變量,所以結果會打印 2。 <br> 前面我們已經說了,JavaScript采用的是靜態作用域,所以這個例子的結果是 1。 <br> <br> # 動態作用域 也許你會好奇什么語言是動態作用域? <br> bash 就是動態作用域,不信的話,把下面的腳本存成例如 scope.bash,然后進入相應的目錄,用命令行執行`bash ./scope.bash`,看看打印的值是多少。 ~~~shell value=1 function foo () { echo $value; } function bar () { local value=2; foo; } bar ~~~ <br> # 例子 **注意 try、if 等在 ES5 沒有塊級作用域,因此使用 `var` 會覆蓋全局作用域定義的變量** ~~~ var m=1 function foo(){ console.log(m);//2 } try{ var m=2 foo() }catch(e){ console.log(e) } ~~~ <br> ~~~ const m=1 function foo(){ console.log(m);//1 } try{ const m=2 foo() }catch(e){ console.log(e) } ~~~
                  <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>

                              哎呀哎呀视频在线观看