[英]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.