【发布时间】:2020-08-30 07:10:14
【问题描述】:
我阅读了无数关于闭包的文章,但我仍在为此苦苦挣扎。也许有人可以向我解释,为什么该功能无法按预期工作。
let counter = (key) => {
let counter = 10;
if (key === 'milk') {
++counter;
}
if (key === 'bread') {
--counter;
}
return function() {
console.log(counter)
}
}
let shopping = counter();
shopping('milk'); // why not 11
shopping('milk'); // 12
shopping('bread'); // 11
shopping('bread'); // 10
对我来说,它应该始终根据参数增加或减少计数器,因为当前状态(计数器)保存在购物变量中。但是,现在的输出始终是 10。
【问题讨论】:
-
首先
key参数应该属于返回的函数而不是更高级别的函数以及条件和递增和递减
标签: javascript closures