【发布时间】:2021-09-13 17:17:16
【问题描述】:
function setupCounter(val){
console.log(val);
return function counter(){
console.log('counter func ', val);
return val++;
}
}
debugger
let counter1 = setupCounter(0);
console.log(counter1()); //0
console.log(counter1()); //1
为什么第一个 counter1() 不增加值并返回 0。但第二个调用将值增加为 1,正如预期的那样:here is what I've been debuggin
【问题讨论】:
-
使用
return ++val -
val++ vs ++val 我认为您对此感到困惑? val++ 首先返回值,然后递增它 - 而 ++val 先递增值然后返回它。如果您希望 (0) 返回 1 - 那么您需要先增加它然后返回它。
-
理想情况下你会在第二种情况下得到 2,在第一种情况下因为关闭而得到 1。
标签: javascript lexical-closures