本文實例講述了Javascript中的方法和匿名方法。分享給大家供大家參考。具體分析如下:
Javascript方法(函數)
聲明函數
以function開頭,後跟函數名,與C#、java不同,Javascript不需要聲明返回值類型、參數類型。沒有返回值就是undefined。
舉個例子更清楚:
無參數無返回值的方法:
function f1(){ alert('這是一個方法'); } f1();//調用方法
無參數有返回值的方法:
function f2(){ return 100; } var result=f2();//聲明一個變量,接收f1()中的返回值 alert(result);//100
有參數有返回值的方法:
function f3(n1,n2){ return n1+n2; } var result=f3(20,30); alert(result);//50
注意1:
先看例子:
function f1(){ alert('這是一個方法'); } alert(f1());//彈出”這是一個方法”後,還會顯示undefined
原因:js中,變量沒有賦值,就是undefined;該栗中f1()沒有返回值,那麼就是一個未知的值(undefined),這裡未知的變量放入alert(),當然彈出的就是undefined
注意2:
alert(f1);//不寫括號,會將f1整個代碼以字符串形式顯示出來: function f1(){ alert('這是一個方法'); }
JavaScript中沒有方法重載
只調用最新定義的方法:
function f1(n1,n2){ alert(n1+n2); } function f1(n1,n2){ alert(n1-n2); } f1(10,2);//8
結論:無論在哪裡調用,都只調用最新定義的方法。
注意:數字+undefined=undefined
function f1(n1,n2,n3){ alert(n1-n2+n3); } f1(10,2); //NaN,因為沒有給n3傳值,n3就是undefined, //數字加上undefined還是undefined
以上結論:Javascript中沒有方法重載
定義方法時注意:
自定義函數名不要和內置方法重名:
不要和js內置、dom內置方法重名,比如selectAll、focus等函數名不要用。
不要與系統函數重名。(在單擊事件中調用自己定義的focus方法,有問題。與系統的focus()方法重名了)
書寫規則括號注意:
一般在js中編寫大括號都是直接跟在後面
function f1(){ return { age:100}; } var s=f1(); alert(s.age); //undefined。s結果是undefined,undefined.age必然還是undefined
匿名方法(用的非常多)
為什麼推薦用匿名方法?
1、有一個1.js中有個方法function aa(){alert{'我挺帥了'}}
2、有一個2.js中有個方法function aa(){alert{'我越來越帥了'}}
3、將1.js和2.js依次導入到index.html中,調用aa();結果顯示:我越來越帥了。
結論:2.js中的aa()方法會覆蓋1.js中的aa()
怎麼辦?不再指定方法名,使用匿名方法
先看一個將匿名方法賦給變量例子:
var ff=function(n1,n2){ return n1+n2; }; alert(ff(20,30));//50
一行寫完匿名方法:
復制代碼 代碼如下:(function (n1,n2){alert(n1+n2);})(9,9);
小案例:1:
var x=1; var y=0; var z=0; var add=function (n){n=n+1;return n}; y=add(x);//結果是2,先調用上面add add=function(n){n=n+3;return n;}; z=add(x);//結果是4,調用上面臨近的這個add alert(y+','+z);//2,4
小案例2:
function aa() { alert("aaa"); return function(){alert("bbb");}; } alert(aa);//不寫括號,會將aa方法的整個代碼顯示出來 alert(aa());//aaa,function(){alert("bbb");}; aaa就不解釋了,後面那一串是作為aa()的返回值顯示 alert(aa()());//aaa,bbb,undefined //下面分解上面這句進行解釋 var s=aa();//aaa alert(s());//s()就是function(){alert("bbb");};首先彈出bbb,其次該方法沒有返回值,故彈出undefined
希望本文所述對大家的javascript程序設計有所幫助。