寫在最前面
函數
- 定義
- 函數聲明
- 函數表達式
- 組成形式
- 函數名稱
- 參數
- 形參
- 實參
- 返回值
//函數聲明
//第一種
function box(參數){
//內容
};
//第二種叫命名函數表達式
var box = function test(參數){
//內容
}
box.name-->test
//第二種寫法function後面就成了表達式,有沒有名字無所謂,所以延伸出了第三種寫法
//第三種叫匿名函數表達式-->函數表達式
var box = function (參數){
//內容
}
box.name -->box
//函數執行
box();
參數
//形式參數-->形參
function test(a,b){
var c= a+b
console.log(c);//等於3
}
//實際參數--實參
test(1,2);
//不定參數 例子一
function test(a){
//a 就等於1
//2,3不用管
隱式的方法arguments[1,2,3]實參列表
找到多餘的實際參數
}
test(1,2,3);
//不定參數 例子二
function test(a,b,c,d){
//a 等於1
//b 等於2
//c 等於3
//d 等於undefined
找到形參的長度sum.length
}
test(1,2,3);
//不定參的好處
var result
function sum(){
for(var i = 0; i<arguments.length){
resuit += arguments[i];
i++;
}
console.log(result);
}
sum(1,2,3,4,5,6,7,8,9)
function sum(a,b){
a = 2;
console.log(arguments[0]);//打印出2,參數a改變了
}
sum(1,2);
function sum(a,b){
a = 2;
arguments[0] = 3
console.log(arguments[0]);//打印出3,參數a改變了,可以相互改變
}
sum(1,2);
//JS的映射規則
function sum(a,b){
b = 2;
arguments[1];
console.log(arguments[0]);
}
sum(1);
//JS的映射規則
> 打印出undefined,實參列表傳進來的時候他就有幾個,就算我讓b等於2,它也不會往arguments裏面加了,因爲他根本就沒有,這個時候b就當一個變量用了,他跟實參不映射,因爲形參比實參多了一位b,只有他們相等的時候他們纔會有映射的規則,不相等的時候, 形參多了他不對應實參了,他們之間不映射。
結束條件加返回值return
- 結束函數,如果沒有寫,系統默認自帶return
- 把值返回到函數外部
function sum(){
return 123
}
var box = sum();-->返回123