理解arguments对象

arguments是什么?

  • arguments是收到的实参副本,对于超出形参个数之外的实参, 可以通过arguments来获得;
  • arguments不是数组, 是(长的比较像数组的)一个对象,有length属性(属性代表实参的个数);
  • arguments 的索引 从 0, 1,2,....递增,与实参逐个对应;
  • 每个函数都会有arguments,因此,arguemnts只会在内部找自身的arguments,无法引用到外层的arguments;

arguments有什么作用?

  • 在javascript中,不需要明确指出参数名,就能访问它们。
function hi(){ 
   if(arguments[0]=="andy"){ 
     return; 
} 
   alert(arguments[0]); 
} 
//用arguments[0]可以访问第一个参数,如此类推。 
  • 利用arguments对象可以实现重载,利用arguments.length可以获取函数的参数个数,如下:
function hi(){ 
   if(arguments.length==1){ 
      alert(arguments[0]); 
   }else if(arguments.length==2){ 
     alert(arguments[0] + arguments[1]);  
  } 
} 
  • arguments的值永远与对应命名参数的值保持同步
function doAdd(num1, num2){
   arguments[1] = 10;
   alert(arguments[0] + num2);
}

每次执行doAdd()函数都会重写第二个参数,将其值该为10.因为arguments对象中的值会自动反应到对应的命名参数。但需要声明的是它两的内存空间是独立的,但值会同步。(严格模式下不允许这样做)

自己定义arguments时,会出现什么问题?

  • 会报错;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容