js在参数中命名函数,无法访问函数外
因为 ECMAScript 第 5 版禁止在严格模式下使用 arguments.callee()。
所以我决定不使用callee
,而是使用命名函数
mdn中的例子
function factorial (n) {
return !(n > 1) ? 1 : factorial(n - 1) * n;
}
[1,2,3,4,5].map(factorial);
变得:
[1,2,3,4,5].map(function factorial(n) {
return !(n > 1) ? 1 : /* what goes here? */ factorial(n - 1) * n;
});
这是个好主意,但我想重用该功能factorial
演示
function d(x){return x;}
d(function a(){});
d(a);// this is not work, a is undefined(works in ie, failed in ff and chrome)
这让我很困扰,据我所知,js 中的范围是函数级的,为什么第二个 a 是 undefined ?