Arguments

作者: hcxowe | 来源:发表于2016-05-22 00:48 被阅读51次

    arguments

    函数参数数组,他只定义在函数体中,函数体中arguments指代该函数的Argument对象。

    • arguments不是数组,他只是拥有数字属性,可以当成数组来使用,含有传入函数的所有参数
    • arguments本质上算是一个局部变量,每个函数都会声明并初始化- 只有在函数体中才是Argument对象,全局为undefined

    Arguments

    元素

    Arguments对象只定义在函数体中,他是对象,拥有数字属性。
    元素0是第一个参数,元素1是第二个参数,以此类推。
    所有作为参数传入的值都将成为Arguments的属性-值。

    属性

    callee
    指代当前正在执行的函数
    length
    传递给函数的参数个数

    注意:非严格模式下,当函数带有命名的参数时,Arguments对象的元素跟参数的局部变量是等同的,他们是引用同一个值的两种方式,修改其中一个都会影响另一个的值

    Paste_Image.png

    第一个console输出传入的'hello',之后通过arguments修改值,在输出x的时候变为'hcxowe'了~,说明两个x跟argument[0]引用同一个值

    Arguments.callee

    指代当前正在执行的函数,通过它可以引用匿名函数自身~

    Paste_Image.png

    通过callee实现一个递归算阶乘的函数~

    Arguments.length

    传递函数的参数个数函数声明时期待传入的参数个数可以通过Function.length获取实际传入的参数通过Arguments.length获取

    Paste_Image.png

    相关文章

      网友评论

        本文标题:Arguments

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