为什么这个闭包和 IIFE 不起作用?
why this closure and IIFE dont works?
为什么这段代码不打印 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 () => {}
) 但没有调用它。您可以简单地 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);
}
})()();
为什么这段代码不打印 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 () => {}
) 但没有调用它。您可以简单地 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);
}
})()();