js function中的arguments属性

最近在研究 js 的的 function 里的arguments属性。

arguments是function里面的特殊的对象,包含了传入函数内的所有参数。这个特殊的对象里有一个cellee的属性,用于指向拥有这个arguments对象的函数。

一下是一个递归的例子:

function recursion(num) {
    if (num < 1) {
        return 1;
    } else {
        return num * recursion(num - 1);
    }
}

这是常规的写法,但是如果我把函数名(recursion)换了,里面的名字也要换一次。但是我们可以用arguments对象的cellee属性重新指向拥有arguments的函数:

function recursion(num) {
    if (num < 1) {
        return 1;
    } else {
        return num * arguments.callee(num - 1);
    }
}

这就是今天记录的内容。

原文地址:https://www.cnblogs.com/zxdesign/p/2987057.html