V2EX POST
649 subscribers
138 photos
31 videos
99 files
104K links
v2ex新贴定时推送,可按需置顶本频道然后关闭通知
Download Telegram
闭包怪异问题: 为啥这个闭包函数不缓存 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