js中的arguments的解析

来源:互联网 发布:免费语音朗读软件 编辑:程序博客网 时间:2024/05/18 01:02

在js中经常会用用到arguments这个对象,而这个属性是代表着函数f(a,b,c,...)中被传入的实参。arguments实际上是一个类数组的对象,arguments具有length的属性和类数组的特性。

1:arguments是收到的实参副本,在词法分析中, 首先按形参形成AO的属性,值为undefined。当实参传来时, 再修改AO的相应属性.2:并把所有收到实参收集起来,放到一个arguments对象里t(a,b,c){},调用时: t(1,2,3,4,5) 5个参数。此时 , AO属性只有a,bc,3个属性, arguments里有1,2,3,4,5, 所有的值。对于超出形参个数之外的实参, 可以通过arguments来获得3:arguments 的索引 从 0, 1,2,....递增,与实参逐个对应4:arguments.length 属性代表实参的个数5:arguments一定不是数组, 是长的比较像数组的一个对象,虽然也有length属性6:arguments每个函数都会有,因此,arguemnts只会在内部找自身的arguments,无法引用到外层的arguments,
示例如下:
<script type="text/javascript">  // 求圆形面积,矩形面积, 三角形面积  function area () {  if(arguments.length == 1) {  alert(3.14 * arguments[0] * arguments[0]);  } else if(arguments.length == 2) {  alert(arguments[0] * arguments[1]);  } else if(arguments.length == 3) {  alert(arguments[0] + arguments[1] + arguments[2]);  } else {  return null;  }  }  area(10,20,30);    </script>

另外,fuction本身也有length的属性,如function f1(a,b,c){.....}, f1.length是代表函数内形参的个数,如f1.length // 3

0 0
原创粉丝点击