闭包怪异问题: 为啥这个闭包函数不缓存 count 值?
function createIncrement() {
let count = 0;
function increment() {
count++;
}
let message = `Count is ${count}`;
function log() {
console.log(message);
}
return [increment, log];
}
const [increment, log] = createIncrement();
increment();
increment();
increment();
log(); // What is logged?
问题
1. 为啥 log()输出 Count is 0?
increment 闭包 ha 函数为啥不缓存 count 的值?
2. 为啥把 let message = `Count is ${count}`移到 log 函数内就能输出 Count is 3?
function log() {
let message = `Count is ${count}`;
console.log(message);
}
#log #increment #count #message #Count #function #let #为啥 #createIncrement #console
function createIncrement() {
let count = 0;
function increment() {
count++;
}
let message = `Count is ${count}`;
function log() {
console.log(message);
}
return [increment, log];
}
const [increment, log] = createIncrement();
increment();
increment();
increment();
log(); // What is logged?
问题
1. 为啥 log()输出 Count is 0?
increment 闭包 ha 函数为啥不缓存 count 的值?
2. 为啥把 let message = `Count is ${count}`移到 log 函数内就能输出 Count is 3?
function log() {
let message = `Count is ${count}`;
console.log(message);
}
#log #increment #count #message #Count #function #let #为啥 #createIncrement #console