重点 :
- 形参只提供便利,但不是必须的
- arguments对象的length由实参的个数决定,而不是形参的个数决定
- 每个实参都与arguments[i]一一对应
- arguments与形参访问的内存空间是独立的
1.传入实参个数等于形参个数时:
function doAdd(num1,num2)
{
arguments[1]=10;
alert(num2);//result=10
}
doAdd(0,0);
function doAdd(num1,num2)
{
num2=10;
alert(arguments[1]);//result=10
}
doAdd(0,0);
形参值及其对应的arguments值会互相影响
2.传入实参个数大于形参个数时:
function doAdd(num1,num2)
{
arguments[1]=10;
alert(num2);//result=10
}
doAdd(0,0,0);
function doAdd(num1,num2)
{
num2=10;
alert(arguments[1]);//result=10
}
doAdd(0,0,0);
3.传入实参个数小于形参个数时:
function doAdd(num1,num2)
{
arguments[0]=11;
alert(num1);//result=11
arguments[1]=10;
alert(num2);//result=undefined
}
doAdd(0);
function doAdd(num1,num2)
{
num1=11;
alert(arguments[0]);//result=11
num2=10;
alert(arguments[1]);//result=undefined
}
doAdd(0);
这种情况下num2会被赋值为undefined,且num2的值与arguments[1]不能互相影响;
而num1与arguments[0]的值仍然会互相影响
综上所述:只要确定min[形参个数,实参个数]就可以很容易的发现哪些形参与其对应的arguments会相互影响