<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智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                >[danger] ##### 案例思考1 ~~~ 1.下面代碼執行打印的結果為 ? a(){} 1 原因是,首先區分'聲明發生在編譯期','語句發生在運行期'之前說過var 聲明的變量會變量提升,但是僅僅只是 變量聲明的提升,并不是變量定義,fucntion 在非塊作用域的情況下他將會發生聲明加定義,因此第一打印因為 var 僅僅是聲明了變量a 但function a 更明確的給這個聲明進行了值的定義因此打印function,代碼向下執行過程 遇到 a=1 此時重新給a 賦值為1,當在執行到function a 的時候因為在最初時候function已經 經歷了定義賦值的階段 此時并不會重新給function a 賦值,因此當執行到下一次打印時候結果為 1 ~~~ ~~~ console.log(a) var a = 1 function a(){} console.log(a) ~~~ >[danger] ##### 案例思考2 ~~~ 1.下面代碼執行打印的結果為 ? a() {} 2 1 主要分析function fn ,首先fn 會有自己的AO 即上下文變量存儲地方,最開始形參賦值實參 AO中的 a --1 但是function 內部開始發生變量提升此時 函數內部的var a 變量提升只是聲明,此時a在實參已經聲明過了, 其實變相無效,注意變量提升僅僅是聲明 并不會賦值因此并不會吧實參中a 的值賦值給undefined,當到了 function a 此時經歷聲明加賦值,雖然a已經被聲明過了 但是卻又被重新賦值因此 函數內部的第一個打印 為function,當依次執行 a =2 將a重新賦值,所以下一次打印為2,函數內部存在作用域的,因此最后打印 結果為1 /!* * EC(G) * a --> 1 * fn --> 0x000 [[scope]]:EC(G) * 變量提升: * var a; * function fn(a) {...}; *!/ var a = 1; function fn(a) { /!* * EC(FN) * a --> 1 * --> 0x001 [[scope]]:EC(FN) * --> 2 * 作用域鏈:<EC(FN),EC(G)> * 形參賦值:a=1 * 變量提升: * var a; * function a() {}; *!/ console.log(a); //=>函數 var a = 2; function a() {} console.log(a); //=>2 } fn(a); //fn(1) console.log(a); //=>1 ~~~ ~~~ var a = 1; function fn(a) { console.log(a); //=>函數 var a = 2; function a() {} console.log(a); //=>2 } fn(a); console.log(a); ~~~ >[danger] ##### 案例三 ~~~ 1.當函數在塊級作用域時候,此時function 將在全局作用域變量提升的時候只是聲明并不會定義,當執行到塊級 時候,在塊級里面提升是聲明加定義,并且全局會復制一份塊的function 定義 ~~~ ~~~ console.log(foo); //undefined 只聲明為定義 { console.log(foo); //函數 在塊級時候聲明加定義 并且復制一份給了全局 function foo() {} console.log(foo); //函數 foo = 1; console.log(foo); //1 重新賦值 } console.log(foo); //函數 全局是復制的塊級里面的更改并不影響全局的 ~~~
                  <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>

                              哎呀哎呀视频在线观看