有没有一种方法可以从在闭包外定义但在闭包内引用的函数打印 temp(闭包变量)的值,而不将 temp 作为变量传递给 funcA?
var funcA, funcB;
funcA = function () {
console.log(temp);
}
funcB = function () {var temp, funcC;
temp = 1;
funcC = funcA;
funcC();
}
funcB(); // temp is undefined.
这行得通,但这只是因为 funcA 是在 funcB 中定义的:
funcB = function () {var temp, funcA, funcC;
temp = 1;
funcA = function () {
console.log(temp);
}
funcC = funcA;
funcC();
}
funcB(); // 1
我正在尝试找到一种方法,将一些函数定义从外部函数中提取出来,以简化变得有点复杂的代码。我可以在 funcB 之外定义 funcA 但仍然引用临时变量而无需传递参数吗?
我读到 javascript 没有动态运行时范围,它只是词法范围,但是在 funcB 中引用函数(funcA 通过 funcC),有没有办法满足词法范围要求并提供对范围的访问funcB 的变量?
最佳答案
根据 Akinkunle Allen 的评论,我想出了这个似乎解决了我的问题。
function funcB () {
var funcA, funcB, temp;
funcA = function () {
console.log(temp);
}
funcB = function () {var funcC;
temp = 1;
funcC = funcA;
funcC();
}
return funcB();
}
funcB(); // 1
关于javascript - 从外部定义的函数访问范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072540/