arguments详解

arguments是函数运行时的实参列表

arguments收集‘所有’的实参,即使没有与之相对应的形参
(function (d,e,f) {
    // 在此函数内,无法用d,e,f形参来取得‘haha',因为没有与之相应的形参
    //但我们可以用arguments来获取任意多个的实参
     console.log(arguments[3]);//haha

    arguments[0] = 'china';
    console.log(d);//形参与对应的arguments单元,其实是 相互映射、相互影响

})('hello','world','!','haha');


arguments.callee属性代表“当前运行的函数”,即自身函数
使用arguments的好处:
不用函数名,即匿名函数,完成递归

alert((function (n) {
    if(n <= 1) {
        return 1;
    } else {
        return n + arguments.callee(n-1);
    }
})(100));


函数运行期间,关键的三个对象
AO --> 本函数AO上没有某属性,则继续去外层函数的AO上找,直到找到全局对象,这叫做作用域链
arguments --> 每个函数都有自己的callee,但不向外层接着找arguments的相关属性,即不形成链
this -->不向外层寻找,即不形成作用域链

你可能感兴趣的:(arguments详解)