首页 > 解决方案 > 更新全局变量

问题描述

我的代码片段首先:

let GLOBAL_VAR_A = 'string1';
let GLOBAL_VAR_B = 'string2';
let GLOBAL_VAR_C = []; // Empty array
let GLOBAL_VAR_D = []; // Empty array

...

start = async () => {  
    ...
    if(...) {
        await updateNews(GLOBAL_VAR_A, GLOBAL_VAR_B, GLOBAL_VAR_C, GLOBAL_VAR_D);
        console.log(GLOBAL_VAR_C); // => [] (empty) (NOT OK)
        console.log(GLOBAL_VAR_D); // => [object Object] = nextNews (OK!!)
    ...
}
};

updateNews = async (sourcePath, webResource, previousNews, nextNews) => {
    previousNews = await getPreviousNews(sourcePath, previousNews);
    console.log('FFF = ' + previousNews); // => FFF = [object Object] (Ok)
    ...
    nextNews.push({
            id: i + 1,
            title: justGottenNews[i].title,
            url: justGottenNews[i].link
    });   
}

getPreviousNews = async (sourcePath, previousNews) => {
    let data = await fs.readFileSync(sourcePath, 'utf8');
    prevNews = previousNews.concat(JSON.parse(data));
    return prevNews;
};

...

我的问题(问题)如下:

当我调用函数updateNews()时,我会传递一些参数 - 全局变量。GLOBAL_VAR_C默认是一个空数组,它被传递给updateNews()函数。此外,这个变量被传递给getPreviousNews()函数。此函数返回一个新数组 ( prevNews ) - 连接空数组并从文件中接收。

然后我想重新定义变量previousNews的值。在函数updateNews()内部,它的值是正确的(返回数组)。

如何进一步重新定义传递的GLOBAL_VAR_C变量的值?它应该等于previousNews。但是当我控制台日志它仍然返回空数组。

有趣的一点是nextNewsupdateNews()函数内更新(方法push())并且GLOBAL_VAR_D也被更新

标签: javascript

解决方案


我的解决方案是使用updateNews()中的push()方法更新全局变量


推荐阅读