美文网首页
ECMAScript arguments对象

ECMAScript arguments对象

作者: LYF闲闲闲闲 | 来源:发表于2016-11-20 20:50 被阅读15次

    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      
    

    相关文章

      网友评论

          本文标题:ECMAScript arguments对象

          本文链接:https://www.haomeiwen.com/subject/utuypttx.html