- 函數聲明
- JavaScript中聲明函數的方式:(無需聲明返回值類型)
function add(i1, i2) {
return i1 + i2; //如果不寫return返回的是undefined
}
int add(int i1,int i2)//C#寫法
- 不需要聲明返回值類型、參數類型。函數定義以function開頭。
var r = add(1, 2);
alert(r);
r = add("你好", "tom");
alert(r);
- JavaScript中不像C#中那樣要求所有路徑都有返回值,沒有返回值就是undefined。
- 易錯:自定義函數名不要和js內置、dom內置方法重名,比如selectAll、focus等函數名不要用。//不要與系統函數重名。(在單擊事件中調用自己定義的focus方法,有問題。與系統的focus()方法重名了)
- arguments對象
- 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
結論:同名函數覆蓋之前的函數。
- 動態爲方法傳遞參數,類似於.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)
- 三種寫法:
第一種:
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));
- 類似於C#中的匿名函數。
- 這種匿名函數的用法在jQuery中的非常多。
- 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