函数的javascript闭包';s参数在更新时不会反映出来
我试图实现一个小的连接功能。它应该在参数中获取一个对象,并将它们放入函数中。我希望最新的物品应该一直使用。看来不是真的函数的javascript闭包';s参数在更新时不会反映出来,javascript,closures,Javascript,Closures,我试图实现一个小的连接功能。它应该在参数中获取一个对象,并将它们放入函数中。我希望最新的物品应该一直使用。看来不是真的 let store = { type: 'initial' }; console.log(store); function connect(param) { const connected2 = function (fn) { return function () { return fn(param); } }; return co
let store = { type: 'initial' };
console.log(store);
function connect(param) {
const connected2 = function (fn) {
return function () {
return fn(param);
}
};
return connected2;
}
function execute(store) {
console.log(store);
}
const connected = connect(store)(execute);
connected(); // console => { type: 'initial' }
store = {type: 'updated'};
connected(); // console { type: 'initial' } but expect updated
execute
中的变量是一个参数,即局部变量。它不引用全局存储变量
删除参数并直接引用全局变量,或者更改对象的属性,例如store.type=“updated”代码>
这种奇怪的函数安排到底有什么意义呢?connect
看起来像是一个奇怪的curried函数,它被懒散地计算。将其重写为const connect=param=>fn=>()=>fn(param)代码>因为您已经依赖于ES2015语法。真正的代码使用ES2015语法,其工作方式与提供的示例相同。它可能是一个以咖喱形式出现的函数,可以懒散地进行计算。这是中所述问题的一个小示例。我想集成两个库。@谢谢你的回答。你把我引向正确的方向。