为什么此代码不打印 i
和 j
变量?
(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 () => {}
),但未调用它。您可以简单地记录
函数中的值,而不返回新函数。
(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);
}
})()();
关于javascript - 为什么这个闭包和 IIFE 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70668648/