为什么这个闭包和 IIFE 不起作用?

why this closure and IIFE dont works?

为什么这段代码不打印 ij 变量?

(function f() {
  let i = 1;
  let j = 2;
  return () => {
    console.log(i);
    console.log(j);
  }
})()

我知道,我知道...这段代码是的,有效:

let f = () => {
  let i = 1;
  let j = 2;
  return () => {
    console.log(i);
    console.log(j);
  }
}

f()();

是的,最后一个代码有效,但我想知道为什么第一个代码无效

非常感谢

您正在从函数返回一个函数 (return () => {}) 但没有调用它。您可以简单地 log 函数中的值而不返回新函数。

(function f() {
  let i = 1;
  let j = 2;
  console.log(i);
  console.log(j);
})();

或者这样称呼。

(function f() {
  let i = 1;
  let j = 2;
  return () => {
    console.log(i);
    console.log(j);
  }
})()();