[英]Sharing counter variable across modules doesn't behave as intended
一个奇怪的...
一位同事有一个计数器(值),他们希望在其应用程序的文件/模块之间共享该计数器(值)。 通常情况下,我会说只是绕过柜台……但他们出于各种原因不想这样做。
所以 - 相当直接的解决方案:创建一个模块,将计数器作为作用域为该模块的变量。 使用两种方法导出 object:一种更新计数器,一种读取计数器。
在需要的地方需要模块 - 并使用方法与计数器交互。
但是,当传入 1 时,setCounter 有时会添加两位数。 我们对 getter 或 setter 没有这个问题......我很困惑为什么 setCounter 会跳过? 我们也单独运行它,但它仍然跳过了……这应该有效。 我不知道为什么不是。 我错过了一些非常明显的东西吗?
let _counter = 1223
module.exports = {
/*
setCounter: (x) => {
_counter = _counter + x // where x is 1 it adds 2!!! why??
},
getCounter: () => {
return _counter;
}
*/
get getCounter(){
return _counter
},
set setCounter(value){
_counter = _counter + value // does not skip _counter++
}
}
编辑
我不知道为什么 - 但它现在开始按预期工作了?
let _counter = 1223
module.exports = {
setCounter: (x) => {
_counter = _counter + x;
},
getCounter: () => {
return _counter;
},
}
刚刚再次测试,它现在可以工作了……没有意义。 我可能应该删除这个问题,但有些人已经花时间回复了。
let _counter = 1223
module.exports = {
setCounter: () => {
_counter = _counter + 1;
return _counter // or return ++counter
},
}
尝试做一个简单的二传手。
i = getCounter();
i++;
setCounter(i);
二传手在哪里
set setCounter(value){
_counter = value;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.