//算法 ---- 递归 function fn(n) { if (n === 1) { return n; } else { return n * arguments.callee(n-1); } } console.log(fn(5));
arguments.callee返回正被执行的 Function 对象 等同于fn;
特点:消除代码耦合、匿名函数的递归
第一步:5 * fn(4)
第二步:5 * 4 * fn(3)
依次类推
最后一步:5 * 4 * 3 * 2 * fn(1) fn(1)得到的返回值就是1 ===> 5 * 4 * 3 * 2 * 1