JavaScript函數(三)

  • 函數聲明
  1. JavaScript中聲明函數的方式:(無需聲明返回值類型)

function add(i1, i2) {

            return i1 + i2;  //如果不寫return返回的是undefined

        }

int add(int i1,int i2)//C#寫法

  1. 不需要聲明返回值類型、參數類型。函數定義以function開頭。

        var r = add(1, 2);

        alert(r);

        r = add("你好", "tom");

        alert(r);

  1. JavaScript中不像C#中那樣要求所有路徑都有返回值,沒有返回值就是undefined。
  2. 易錯:自定義函數名不要和js內置、dom內置方法重名,比如selectAll、focus等函數名不要用。//不要與系統函數重名。(在單擊事件中調用自己定義的focus方法,有問題。與系統的focus()方法重名了)
  • arguments對象
  1. JavaScript沒有方法重載

var x=1;

var y=0;

var z=0;

function add(n){n=n+1;return n}

y=add(x);

function add(n){n=n+3;return n;}

z=add(x);

alert(y+’ ’+z); //執行結果:4 4

結論:同名函數覆蓋之前的函數。

  1. 動態爲方法傳遞參數,類似於.net中的params關鍵字作用

<script type="text/javascript">

        function myFunc() {

            for (var i = 0; i < arguments.length; i++) {

                document.write(arguments[i]);

                document.write('<br/>');

            }

        }

        myFunc('張三', 18, '李四', 19);

    </script>

  • 匿名函數(函數直接量function literal
  1. 三種寫法:

第一種:

var f1=function(p1,p2){ return p1+p2; };//將函數賦值給一個變量

alert(f1(1,3));

應用:

///document.getElementById(‘btn’).οnclick=function(){}

 

第二種(*):

(function(p1,p2){alert(p1+p2);})(20,30);

第三種:(*)

var m1=new Function(“p1”,”p2”,”p3”,”return p1+p2+p3”);

alert(m1(1,2,3));

  1. 類似於C#中的匿名函數。
  2. 這種匿名函數的用法在jQuery中的非常多。
  3. alert(function(i1, i2) { return i1 + i2; }(10,10));//直接聲明一個匿名函數,立即使用。用匿名函數省得定義一個用一次就不用的函數,而且免了命名衝突的問題,js中沒有命名空間的概念,因此很容易函數名字衝突。通過例子發現一旦命名衝突以最後聲明的爲準。儘量減少文件的字節數。

var x=1;

var y=0;

var z=0;

var add=function (n){n=n+1;return n}

y=add(x);

add=function(n){n=n+3;return n;}

z=add(x);

alert(y+’,’+z);//執行結果2,4

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章