JS_arguments
arguments: javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检查。实际上,javascript函数调用甚至不检查传入形参的个数
|- -同名形参: 严格模式下,出现同名形参会抛出语法错误 function add(x,x,x){}
|- -参数个数:
|- -实参比函数声明指定的形参个数要少, 剩下的形参都将设置为undefined值
**需要设置默认值function add(x,y){y = y || 2} 【undefined、null、false、0、-0、''、NaN】
|- -实参比形参个数要多, 需要使用arguments对象 arguments[0],arguments[1]
|- -对象为参数 function add(Obejct) {Object.age++}
|- -同步 严格模式下,arguments对象的值和形参的值是独立的 function(num1){ num1,arguments[0] // 1, 1 arguments[0]=2 //1, 2 }
|- -callee arguments属性, 指向拥有这个arguments对象的函数 【严格模式下,访问这个属性会抛出TypeError错误】
|- -caller
|- -函数的caller 调用当前函数的函数的引用 【严格模式下,访问这个属性会抛出TypeError错误】
|- -arguments对象的caller 无用
|- -函数重载 只能通过检查传入函数中参数的类型和数量并作出不同的反应,来模仿方法的重载
if(arguments.length == 1){
alert(arguments[0] + 10);
}else if(arguments.length == 2){
alert(arguments[0] + arguments[1]);
}
|- -参数传递 按值传递(函数外部的值复制到函数内部的参数)
|- -基本类型值 复制给一个局部变量 (命名参数或arguments对象的一个元素)
|- -引用类型值 地址复制给一个变量, 变量发生改变影响函数外部的值
详细教程 https://www.cnblogs.com/xiaohuochai/p/5706289.html