ECMAScript arguments对象

1.arguments是什么?

  • arguments 是一个类数组对象
  • arguments对象是函数内部的本地变量,已经不再是函数的属性了。

2.arguments有什么用?

  • 在函数内部,使用特殊对象 arguments,无需明确指出参数名,就能访问这些参数。
    举例来说,我在addAll(){ }函数中,使用了arguments[0],但是我没有指定参数,当我要调用addAll(2)时,给他传了一个参数就可以在函数中获取到arguments[0]=2

  • 还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。
    如果一个函数有三个参数,那么arguments.length = 3,你可以通过以下方式获取参数:

    • arguments[0]
    • arguments[1]
    • arguments[2]

代码

function addAll(){
  let sum = 0;
  for(let i=0;i<arguments.length;i++){
     sum +=arguments[i];
  }
  console.log(sum);
}
addAll(10,20);

3.如果我们在函数中自己定义了一个名为arguments的变量,会出现什么情况?

  • 尝试之后发现整个程序报错,提示** Identifier 'arguments' has already been declared**,所以不要定义arguments变量。

4.callee属性

callee属性是一个指针,指向拥有这个arguments对象的函数

  • 用callee实现阶乘
function fac(num){
  if( num <= 1 ){
    return 1;
  } else{
    return num*arguments.callee(num-1);
  }
}
  • 解除函数名与函数体之间的耦合,对上面的函数fac,进行下面的操作
let newFac = fac;
fac = function(){
  return 0;
}
alert(newFac(5));  //120
alert(fac(5));     //0      
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • arguments 对象函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。ar...
    json_jie阅读 212评论 0 0
  • 概念学习 什么是arguments?在函数代码中,使用特殊对象 arguments,无需明确指出参数名,就能访问它...
    LYF闲闲闲闲阅读 173评论 0 0
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,270评论 0 4
  • 2015年5月25日分享 创作,来源于生活,来源于体验,并由此生出你的感受,你的见地,形成你的思维与逻辑。 如,作...
    吴波全息空间阅读 49评论 0 0
  • 我们一直都在寻找一个人,ta就在我们的旁边,只是活在“平行时空里”的我们,都看不见彼此。但也许我们只是交角比较小,...
    九天林林阅读 197评论 0 0