JS中“arguments对象”是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中“arguments对象”是啥?相关的知识,希望对你有一定的参考价值。

参考技术A

函数体内标识符arguments指向实参象引用实参象类数组象 arguments[0]arguments.length

arguments?

答:1:arguments收实参副本

词析, 首先按形参形AO属性,值undefined

实参传, 再修改AO相应属性.

2:并所收实参收集起,放arguments象

t(a,b,c),

调用: t(1,2,3,4,5) 5参数

, AO属性a,bc,3属性, arguments1,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>

参考技术B   参考下我的js笔记

  在函数体内,标识符arguments是指向实参对象的引用,实参对象是一个类数组对象 arguments[0],arguments.length

  arguments是什么?
  答: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>

浅谈JS的arguments对象

  在JavaScript中,arguments属于当前对象的一个内置属性,arguments非常类似于Array对象,但是又不是实例的Array。比如:

Array.prototype.testArg = "test";
function funcArg() {
    alert(funcArg.arguments.testArg);  
    alert(funcArg.arguments[0]);
}

alert(new Array().testArg); // result: "test"
funcArg(10);                // result: "undefined"  "10"

  arguments对象的长度是由实参个数决定的,形参是函数内部重新开辟内存空间储存的变量,与arguments对象内存空间不重叠。对于arguments和值都存在的情况下,两者值都是同步的,但是针对一个无值得情况下,无值是不会得以同步的,如例:

function f(a, b, c){
    alert(arguments.length);   // result: "2"
    a = 100;
    alert(arguments[0]);       // result: "100"
    arguments[0] = "qqyumidi";
    alert(a);                  // result: "qqyumidi"
    alert(c);                  // result: "undefined"
    c = 2012;
    alert(arguments[2]);       // result: "undefined"
}

f(1, 2);

    arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

function count(a){
    if(a<1){
        return 1;
    } 
    return a + arguments.callee(a-1);
}

var num = count(4);
alert(num);

  差不多常用的就这些吧。如有疑问或见解,多多指正。

 

以上是关于JS中“arguments对象”是啥?的主要内容,如果未能解决你的问题,请参考以下文章

arguments callee caller

javascript里的arguments是啥意思??

浅谈js中arguments对象

JS arguments对象

在js中arguments对象的理解

浅谈JS的arguments对象