函数参数的javascript闭包在更新后不会反映

时间:2016-06-29 11:35:23

标签: javascript closures

我试图实现一个小连接功能。它应该在参数中取一个对象并将它们放入一个函数中。我的期望应该始终使用最新的对象。看起来这不是真的。

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

1 个答案:

答案 0 :(得分:3)

execute中的变量是一个参数,即一个局部变量。它不引用全局store变量。

删除参数并直接引用全局变量,或者改变对象的属性,例如: store.type = "updated";

这种离奇的功能安排有什么意义呢?