严格模式下,arguments.callee和arguments.callee.caller都不可访问,如何编写松散耦合的递归函数?下面以阶乘函数为例:
"use strict";
var fun = function innerFun(num){//内部函数
if(num === 0){
return 1;
}
return num * innerFun(num - 1);
}
console.log(fun(5)); //120
console.log(fun.name); //innerFun
var funCopy = fun;
fun = () => console.log("已解除引用");
console.log(funCopy(5)); //120
console.log(innerFun(5)); //不可访问,报错