如果这是重复的,请告诉我这是什么重复。如何让 js 闭包在多个函数中重用?似乎我无法弄清楚,我可能遗漏了一些东西,但我要么必须继续重新实现内部函数(以创建闭包),要么将函数放在外面(但是,它不再是闭包了)。我如何同时做这两个?
示例:所以一个 js 闭包是这样创建的:
function a()
{
var x = "99";
var b = function()
{
//x=99
}
}
function z()
{
var x = "99";
var b = function()
{
//x=99
}
}
但是,这不是关闭:
function bTemplate()
{
//when coming from call of b() in m, x will not be the x from function m!
}
function m()
{
var x = "99";
var b = bTemplate;
b(); //x is not the x from function m
}
function n()
{
var x = "98";
var b = bTemplate;
b(); //x is not the x from function m
}
我的问题是: *如何从外部定义一个函数(以避免重复),同时创建一个闭包,这样就不必传入参数?也许这真的很明显,但由于某种原因,无法弄清楚。*
例如上面,如果 m 和 n 是稍微不同的包装函数,如何在不将 bTemplate 实现为两者的内部函数的情况下捕获两者的状态?
谢谢!