函数的参数分为形参和实参
add(1,2,3)----运行函数的时候给的值是实参
function add(a,b){}----声明函数的时候,是形参
function add(a,b,c,d){
console.log(arguments.length);//实参个数 3
console.log(add.length);//形参的个数 4
console.log(add.name);//函数的名字 add
a=3;
console.log(a,arguments[0]);//3 3 当形参和实参是对应的上的时候,他们相互映射,一个改变另一个也会改变
arguments[1]=5;
console.log(b,arguments[1]);//5 5 当形参和实参是对应的上的时候,他们相互映射,一个改变另一个也会改变
d=4;
console.log(d,arguments[3]);//4 undefined 当形参实参对不上的时候,他们不再映射,相互不会影响
}
add(1,2,3);
function add1(a){
console.log(a,arguments[0],arguments[1]);//1 1 2
arguments[1]=3;
console.log(a,arguments[0],arguments[1]);//1 1 3
}
add1(1,2);
注意:参数的类型
function add(a,b){
//函数有形参会再函数内部声明并赋值,没有的话会按作用域链直接找父级中是否存在这个变量
//var a=a;var b=b;由于a是引用类型,所以会改变全局中的a b是原始值,只是单纯的复制一份
a.push('123');
b=b+1;
console.log(a,b);
}
var a=[1,2,3],b=3;
add(a,b);//[1,2,'123'] 4
console.log(a,b); //[1,2,'123'] 3