<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國際加速解決方案。 廣告
                2017.1.15開始讀-2017.1.22完成 深入理解js知識點 書籍下載:http://download.csdn.net/detail/u010080803/9738410 第三章 3.4.3 let作用 `var foo = true; if (foo) { let bar = foo * 2; bar = something( bar ); console.log( bar );//2 } console.log( bar ); // ReferenceError ` ~~~ var foo = true; if (foo) { var bar = foo * 2; bar = something( bar ); console.log( bar );//2 } console.log( bar ); // 2 ~~~ 使用 let 進行的聲明不會在塊作用域中進行提升。聲明的代碼被運行之前,聲明并不 “存在”。 ~~~ console.log( bar ); // ReferenceError! let bar = 2; ~~~ ~~~ console.log( bar ); //2 var bar = 2; ~~~ 第五章:閉包 ~~~ 閉包: function foo() { var a = 2; function bar() { console.log( a ); } return bar; } var baz = foo(); baz(); // 2 —— 朋友,這就是閉包的效果。 ~~~ 函數 bar() 的詞法作用域能夠訪問 foo() 的內部作用域。然后我們將 bar() 函數本身當作 一個值類型進行傳遞。在這個例子中,我們將 bar 所引用的函數對象本身當作返回值。 在 foo() 執行后,其返回值(也就是內部的 bar() 函數)賦值給變量 baz 并調用 baz(),實 際上只是通過不同的標識符引用調用了內部的函數 bar()。 bar() 顯然可以被正常執行。但是在這個例子中,它在自己定義的詞法作用域以外的地方 執行。 在 foo() 執行后,通常會期待 foo() 的整個內部作用域都被銷毀,因為我們知道引擎有垃 圾回收器用來釋放不再使用的內存空間。由于看上去 foo() 的內容不會再被使用,所以很 自然地會考慮對其進行回收。 而閉包的“神奇”之處正是可以阻止這件事情的發生。事實上內部作用域依然存在,因此 沒有被回收。誰在使用這個內部作用域?原來是 bar() 本身在使用。 拜 bar() 所聲明的位置所賜,它擁有涵蓋 foo() 內部作用域的閉包,使得該作用域能夠一 直存活,以供 bar() 在之后任何時間進行引用。 bar() 依然持有對該作用域的引用,而這個引用就叫作閉包。 ~~~ function foo() { var a = 2; function baz() { console.log( a ); // 2 } bar( baz ); } function bar(fn) { fn(); // 媽媽快看呀,這就是閉包! } ~~~ 把內部函數 baz 傳遞給 bar,當調用這個內部函數時(現在叫作 fn),它涵蓋的 foo() 內部 作用域的閉包就可以觀察到了,因為它能夠訪問 a。 第二部分:this this 既不指向函數自身也不指向函數的詞法作用域.this 實際上是在函數被調用時發生的綁定,它指向什么完全取決于函數在哪里被調用。
                  <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>

                              哎呀哎呀视频在线观看