为什么不能在一个块内更改全局变量?

问题描述 投票:0回答:1

我是javascript新手,需要一些帮助

i定义了一个全局变量,并在一个块中对其进行了更改,但是在块之后该变量未更改,这是怎么了?

在控制台中,我得到

09:48:40.085信息javascript.0(22123)script.js.Mein_Haus.test2:主要bevor函数调用55509:48:40.085信息javascript.0(22123)script.js.Mein_Haus.test2:更改555后进入功能块外09:48:40.085信息javascript.0(22123)script.js.Mein_Haus.test2:函数调用555之后的main09:48:40.086信息javascript.0(22123)script.js.Mein_Haus.test2:在块中更改55509:48:40.086信息javascript.0(22123)script.js.Mein_Haus.test2:在change111之后进入代码块]

var fs = require('fs');
var toWriteListXml = '/home/uwe/bin/out.txt'
var content;
var global = {}
global.storedData = 555



console.log('main bevor function call ' + global.storedData)
LoadData()
console.log('main after function call ' + global.storedData)



function LoadData() {
fs.readFile(toWriteListXml, function read(err, data) {
if (err) {
    throw err;
}
content = data
console.log('in block bevor change ' + global.storedData)
global.storedData = 111
console.log('in block after change' + global.storedData)
});
console.log('in function out of block after change ' + global.storedData)
} 
variables global block
1个回答
0
投票

函数read是一个异步回调。它不会立即执行,而是在文件加载完成后执行。当您调用console.log('main after function call '时,尚未执行回调(如您所获得的日志顺序所示),并且尚未设置变量。

© www.soinside.com 2019 - 2024. All rights reserved.