posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          JavaScript 學習 - Functions

          Posted on 2007-05-04 22:20 ZelluX 閱讀(320) 評論(0)  編輯  收藏 所屬分類: Web

          越來越發現JavaScript其實是一門很強大、很精深的語言,要好好學習下。
          以下例子都摘自于Professional JavaScript for Web Developers

          1. JavaScript中函數不能重載。

          2. 每個函數有一個對應的arguments[]數組,包含所有的參數,且數量不需固定。

          function howManyArgs() {
              alert(arguments.length);
          }

          3. 函數也是一個對象,使用Function類創建函數的方法是:
          var function_name = new Function(argument1, argument2,..,argumentN, function_body);
          這里所有的參數都必須是字符串。
          var sayHi = new Function("sName", Message""alert(\"Hello \" + sName + \", \" + sMessage + \”);”);
          從這個角度看,不支持函數重載的原因也很簡單。
          doAdd = new Function("iNum""alert(iNum + 100)");
          doAdd 
          = new Function("iNum""alert(iNum + 10)");
          doAdd(
          10);
          可以推出的幾個結論:
          a) 第二次函數聲明使得doAdd指向了另一個對象,自然不可能實現重載。
          b) 函數可以通過句柄很容易的復制。
          c) 函數能作為參數傳遞給另一個函數。
          d) func.toString()可以得到函數的具體內容。

          4. 閉包 Closure
          簡單的定義就是使用了函數體之外的引用。
          var sMessage = “Hello World!”;
          function sayHelloWorld() {
              alert(sMessage);
          }

          sayHelloWorld();
          var iBaseNum = 10;
          function addNumbers(iNum1, iNum2) {
              
          function doAddition() {
                  
          return iNum1 + iNum2 + iBaseNum;
              }

              
          return doAddition();
          }
          例二中的內嵌方法doAddition()使用了外部方法的參數。
          主站蜘蛛池模板: 晴隆县| 磴口县| 成都市| 紫云| 奉贤区| 诸暨市| 高碑店市| 遂川县| 察雅县| 江达县| 河北省| 太湖县| 修水县| 鹤峰县| 九龙坡区| 澄城县| 塘沽区| 馆陶县| 满洲里市| 突泉县| 木里| 南木林县| 潼关县| 磐安县| 福泉市| 桐城市| 靖州| 布拖县| 铜山县| 南川市| 宝坻区| 青州市| 华宁县| 南京市| 岗巴县| 怀安县| 报价| 襄樊市| 岳池县| 汾阳市| 建始县|