自知其無知
          不懂,慢慢懂。
          posts - 2,comments - 2,trackbacks - 0

          所謂閉包,是指詞法表示包括不必計算的變量的函數,也就是說,該函數能使用函數外定義的變量。
          在 ECMAScript 中使用全局變量十一哥簡單的閉包實例。考慮下面的代碼:


          <script>
            
          var sMessage = "Hello world";
            
            
          function sayHelloWorld(){
               alert(sMessage);
            }


            sayHelloWorld();
          </script>

          在這段代碼中,腳本被載入內存后,并未為函數 sayHelloWorld() 計算變量 sMessage 的值。該函數捕獲 sMessage 的值只是為以后使用,也就是說,解釋程序知道在調用該函數時要檢查 sMessage 的值。sMessage 將在函數調用 sayHelloWorld()時(最后一行)被賦值,顯示消息 "Hello World".
            在一個函數中定義另一個函數會使閉包變得更加復雜,如下所示:
           
          <script>
             
          var iBaseNum = 10;
             
          function addNumbers(iNum1,iNum2){
               
          function doAddition(){
                 
          return iNum1 + iNum2 + iBaseNum;
               }

               
          return doAddition();
             }

          </script>

          這里,函數 addNumbers() 包括函數 doAddition( 閉包)。內部函數是個閉包,因為它將獲取外部函數的參數 iNum1 和 iNum2 以及全局變量 iBaseNum 的值。 addNumbers() 的最后一步 doAddition() 函數根本不接受參數,
          它使用的值是從執行環境中獲取的。
             可以看到,閉包是 ECMAScript 中非常強大多用的一部分,可以用于執行復雜的計算。就像使用任何高級函數一樣,在使用閉包時要當心,因為它們可能會變得非常復雜。
          posted on 2008-12-08 11:57 CopyHoo 閱讀(227) 評論(0)  編輯  收藏 所屬分類: JavaScript
          主站蜘蛛池模板: 龙井市| 玉环县| 赤水市| 博野县| 嘉善县| 奎屯市| 即墨市| 高碑店市| 锦屏县| 齐齐哈尔市| 治县。| 理塘县| 新津县| 遵义县| 修武县| 海门市| 多伦县| 阿瓦提县| 邵武市| 乌拉特中旗| 林甸县| 黔东| 修文县| 惠来县| 通辽市| 南和县| 宜宾市| 逊克县| 略阳县| 福州市| 贵阳市| 保德县| 萍乡市| 乐至县| 正宁县| 壶关县| 开原市| 武夷山市| 宣威市| 波密县| 二手房|