更新全局变量

时间:2019-07-31 20:29:45

标签: javascript

我的代码段优先:

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 。但是当我使用控制台日志时,仍然返回空数组。

有趣的是, nextNews 是在 updateNews()函数(方法 push())和 GLOBAL_VAR_D 中更新的>也将更新

1 个答案:

答案 0 :(得分:0)

对我来说,解决方案是使用 updateNews()

中的 push()方法更新全局变量