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

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      

你可能感兴趣的:(ECMAScript arguments对象)