在 app.js 文件中:const tempStore = require("./tempStore.js");setInterval(() => { tempStore.setTemp(1); console.log(tempStore.temp); // I expect this will log 1 then 2 then 3 so on...}, 1000);在 tempStore.js 文件中:let temp = 0;const setTemp = num => { temp += num;}module.exports = { temp: temp, setTemp: setTemp}我希望这一行console.log(tempStore.temp);会给我一个递增的数字序列:1234......但它给了我这个:0000....换句话说总是0。我可以通过修改此代码找到另一种方法来获得我所期望的:在 app.js 文件中:const number = tempStore.setTemp(1); // store returned value in a constantconsole.log(number); // show it在 tempStore.js 文件中:temp += num;return temp; // return the result但是我更喜欢直接从 中获取号码temp,为什么不能这样做?据我所知,我可以在 .js 文件之间的前端开发中编码时执行此操作。但是为什么我不能在 NodeJS 中做到这一点,怎么了?
1 回答
慕村9548890
TA贡献1884条经验 获得超4个赞
尝试这样的事情:
const store = {
temp: temp,
setTemp: setTemp
}
function setTemp(num) {
store.temp += num;
}
module.exports = store;
您当前方法的问题在于,导出对象的temp属性设置temp为创建对象时的值,并且由于在setTemp函数内部所做的唯一更改是 reassign temp,因此导出的对象不会发生变异。
是不是和这个一样:
let temp = 0;
const setTemp = num => {
temp += num;
}
const store = {
temp: temp,
setTemp: setTemp
}
console.log("default", store.temp);
setTemp(10);
console.log("after change", store.temp);
添加回答
举报
0/150
提交
取消