如何获取在NodeJS中另一个文件中声明的变量的动态值

在 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);会给我一个递增的数字序列:


1

2

3

4

...

...

但它给了我这个:


0

0

0

0

..

..

换句话说总是0。


我可以通过修改此代码找到另一种方法来获得我所期望的:


在 app.js 文件中:


const number = tempStore.setTemp(1); // store returned value in a constant

console.log(number); // show it

在 tempStore.js 文件中:


temp += num;

return temp; // return the result

但是我更喜欢直接从 中获取号码temp,为什么不能这样做?


据我所知,我可以在 .js 文件之间的前端开发中编码时执行此操作。但是为什么我不能在 NodeJS 中做到这一点,怎么了?


慕森王
浏览 294回答 1
1回答

慕村9548890

尝试这样的事情: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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript