函數 結構function 函數名([形參]){ return 某個值;} //調用 1》函數的幾種形式 函數的幾種形式: 無參數,無返回值的函數(函數中沒有return,括弧里沒有參數) 有參數,無返回值的函數(函數中沒有return,括弧里有參數) 無參數,有返回值的函數(函數中有return, ...
函數
結構
function 函數名([形參]){
return 某個值;
}
//調用
1》函數的幾種形式
函數的幾種形式:
無參數,無返回值的函數(函數中沒有return,括弧里沒有參數)
有參數,無返回值的函數(函數中沒有return,括弧里有參數)
無參數,
有返回值的函數(函數中有return,括弧里沒有參數)
有參數,
有返回值的函數(函數中有return,括弧里有參數)
註意:
如果函數中沒有使用return,或者函數中return後面沒有任何內容,此時定義變數接收函數的返回值,
都是undefined.
函數如果有返回值,在return下麵的代碼是不執行的.
2》形參:定義函數的時候,小括弧里的參數.
實參:調用函數的時候,傳入進去的參數.
在其它語言中實參個數必須和形參個數一致,但是JavaScript中沒有函數簽名的概念
就是說:實參個數和形參個數可以不相等
如function getSum(num1,num2,num3){
console.log(num3);//undefined
return num1+num2;
}
var sum=getSum(10,20);//30
console.log(sum);
3>如果是命名函數的形式,函數會被被覆蓋,即沒有重載的概念。
如果是匿名函數,由於函數名為空,不會被覆蓋。
列: var getSub=function (num1,num2) {
return num1-num2;
};
var sub=getSub(10,20);
console.log(sub);
var getSub=function (n1,n2) {
return n1+n2;
};
var sub=getSub(10,20);
console.log(sub);
}
4》全局變數
:定義在script或者不屬於某個函數的變數
局部變數
:定義在函數內部的變數
函數內部可以訪問到該函數所屬的外部作用域的變數(作用域鏈)
不使用var聲明的變數是全局變數,不推薦使用。
變數退出作用域之後會銷毀,全局變數關閉網頁或瀏覽器才會銷毀
5》在函數中可以使用arguments.length來獲取調用方法時候傳入了多少個參數.
6》函數可以作為參數
1.函數是有數據類型的
2.函數可以作為函數的參數使用
3.函數可以作為函數的返回值使用
function ff1(num1,num2){
return num1+num2;
}
function ff2(num1,num2){
return num1-num2;
}
function ff3(x,y,fn){
return fn(x,y);
}
console.log(ff3(10,20,ff1));
console.log(ff3(10,20,ff2));