最近在研究 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); } }
这就是今天记录的内容。