博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中arguments
阅读量:5973 次
发布时间:2019-06-19

本文共 1717 字,大约阅读时间需要 5 分钟。

arguments

每天一对象,JS天天见,今天我们来看看arguments对象及属性。arguments对象不能显式创建,arguments对象只有函数开始时才可用。函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是 arguments 对象的 0…n 属性的其中一个参数。
  下面的示例演示了 arguments 对象的用法,arguments对象和Function是分不开的。

 1
function
 ArgTest(a, b)
{
 2   var i, s = "The ArgTest function expected ";
 3   var numargs = arguments.length;     // 获取被传递参数的数值。
 4   var expargs = ArgTest.length;       // 获取期望参数的数值。
 5   if (expargs < 2)
 6      s += expargs + " argument. ";
 7   else
 8      s += expargs + " arguments. ";
 9   if (numargs < 2)
10      s += numargs + " was passed.";
11   else
12      s += numargs + " were passed.";
13   s += "\n\n"
14   for (i =0 ; i < numargs; i++){      // 获取参数内容。
15   s += "  Arg " + i + " = " + arguments[i] + "\n";
16   }
17   return(s);                          // 返回参数列表。
18}
 
以上是arguments对象,由于和Function对象紧密地联系在一起。也就是说每一个函数都有自己的argument属性。下面我们来看看argument属性:为当前执行的 function 对象返回一个arguments 对象,function 参数是当前执行函数的名称,可以省略。
   通过 arguments 属性(相对于Function来说),函数可以处理可变数量的参数。arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。请看下面的例子:
 1
function
 ArgTest()
{
 2   var i, s, numargs = arguments.length;
 3   s = numargs;  
 4   if (numargs < 2)
 5      s += " argument was passed to ArgTest. It was ";
 6   else
 7      s += " arguments were passed to ArgTest. They were " ;
 8   for (i = 0; i < numargs; i++)
 9      {
10         s += arguments[i] + " ";
11      }
12   return(s);
13}
   我们知道每一个对象都有自己的属性,arguments对象也不例外,首先arguments的访问犹如Array对象一样,用0到arguments.length-1来枚举每一个元素。下面我们来看看callee属性,返回正被执行的
Function 对象,也就是所指定的
Function 对象的正文。
callee 属性是
arguments 对象的一个成员,仅当相关函数正在执行时才可用。
callee 属性的初始值就是正被执行的
Function 对象,这允许匿名的
递归函数
1
function
 factorial(n)
{
2  if (n <= 0)
3  return 1;
4  else
5    return n * arguments.callee(n - 1)
6}
7
print(factorial(
3
));
8

转载于:https://www.cnblogs.com/itjeff/p/4081302.html

你可能感兴趣的文章
jquery 表单验证
查看>>
openstack 之 windows server 2008镜像制作
查看>>
VI快捷键攻略
查看>>
Win server 2012 R2 文件服务器--(三)配额限制
查看>>
卓越质量管理成就创新高地 中关村软件园再出发
查看>>
linux rsync 远程同步
查看>>
httpd的manual列目录漏洞
查看>>
myeclipse2014破解过程
查看>>
漫谈几种反编译对抗技术
查看>>
VS 编译错误
查看>>
Timer 和 TimerTask 例子
查看>>
Spring BOOT 集成 RabbitMq 实战操作(一)
查看>>
安装python3.5注意事项及相关命令
查看>>
进程通信之无名信号量
查看>>
logstash通过rsyslog对nginx的日志收集和分析
查看>>
GOTO Berlin: Web API设计原则
查看>>
MVP模式在携程酒店的应用和扩展
查看>>
高通降低芯片能耗 让物联网设备也用上LTE
查看>>
弗吉尼亚理工大学生物复杂性研究所将建设第三个数据中心
查看>>
新型Android木马Xavier爆发:可悄然窃取你的个人信息
查看>>