为什么参数通过关闭无效?

Why the parameter goes invalid through closure?

根据代码片段,为什么Fn1无法获取最开始的参数“foo”?如果我仍然想使用闭包的形式而不是在Fn3中引入一个新的参数,有没有可能让Fn1访问“foo”?

const Fn1 = (txt) => {
  console.log(txt);
}

const Fn3 = (fn, num) => {
  return () => {
    fn(); // undefined
    console.log(num) // 7
  }
}

const Fn2 = Fn3(Fn1, 7);

Fn2("foo"); // undefined, 7

您需要传递参数:

const Fn3 = (fn, num) => {
  return (parameter) => {
    fn(parameter);
    console.log(num);
  }
}

const Fn2 = Fn3(Fn1, 7);

Fn2("foo");