js中的arguments对象

  其实,每个函数内部都有一个内建的arguments数组,它能返回函数所接受的所有参数。

例:

function mutiplyByTwo() {
    var i, ar = [];
    for(i = 0;i<3;i++) {
       ar[i] = arguments[i]*2;
    }
    return ar;
}
>> mutiplyByTwo(1,2,3);
=>[2,4,6]

 其实上面的例子看似arguments像是一个数组,其实它实际上是一个类似数组的对象。

而arguments还有一个值得关注的属性——callee属性。它引用的是当前被调用的函数对象。也就是说我们所建函数的返回值是 arguments.callee,那么这个函数在被调用时就会返回自身的引用。

>> function f() {return arguments.callee;}
>> f()
f()

 此外,我们还可以通过arguments.callee属性来实现匿名函数的递归调用;

例如:

(
    function (count) {
       if (count < 5) {
         alert (count);
         arguments.callee(++count);
       }
   }
)(1)

上例alert窗口会弹出四次,分别是1、2、3、4.

猜你喜欢

转载自553570934.iteye.com/blog/2302791