我的代码段优先:
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 中更新的>也将更新
答案 0 :(得分:0)
对我来说,解决方案是使用 updateNews()
中的 push()方法更新全局变量