《javascript進階程式設計》學習筆記(三):javascript 函數一些特性

來源:互聯網
上載者:User
 

這裡只記錄下javascript函數的一些特性。關於對象,類比類會在以後的筆記中記錄

1.javascript函數無重載。

js不支援重載,後面函數會覆蓋前面函數。它不支援重載的特點不免讓人感到意外。

2.arguments對象

js不支援重載,不代表我們不能實現重載。程式員的智慧是無窮的!讓我們藉助arguments對

象來實現函數重載吧!arguments.length表示參數個數

function sayHi(){
    if(arguments.length == 1){
       if(typeof(arguments[0])=="string"){
     alert("do method 1");
       }else{
     alert("do method 2");
       }
    }else if(arguments.length == 2){
     alert("do method 3");
    }
}

sayHi("hehe");
sayHi(1);
sayHi("傻笑",100)

3.Function 類

可以使用Function類直接建立函數:
var function_name = new Function(arg1,arg2,...argN,function_body);

例如:
var sayHi = new Function("sName","sMessage","alert(sName+','+sMessage);");
sayHi("wangping","ww");

注意:最好不要使用Function類建立函數,因為----慢!

4.由於函數名只是指向函數的變數,所以可以把函數作為參數傳遞給另外一個參數。

function callFun1(fnFun1,vArg){
   fnFun1(vArg);
}

function doAdd(iNum){
   alert(iNum+10);
}
callFun1(doAdd,10);

5.由於函數是參考型別,所以它們也有屬性和方法名。

function_name.length      返回函數名為function_name的函數的參數個數。
function_name.toString()  返回函數名為function_name的函數的原始碼(這個調試的時候

很有用)。
function_name.valueOf()    同function_name.toString()

代碼:
function doAdd(){
   alert(10);
}
alert(doAdd.valueOf());

6.閉包。閉包是javascript最容易讓人誤解的特點之一。所謂閉包,指詞法表示包括不必計算

的變數的函數,通俗地說就是指函數能訪問函數外定義的變數:

var iBaseNum =10;

function outerFun(iNum1,iNum2){
    function innerFun(){
 alert(iNum1+iNum2+iBaseNum)
    }
    return innerFun();
}

outerFun(1,1);

innerFun可以無需定義參數,得到它外部的函數iNum1,iNum2的參數值以及全域變數iBaseNum

的值。雖然難於想像,但是當你被c#等語言為了互相調用而不停地定義參數搞得抓狂時,你就

看到閉包的好處了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.