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

时间:2020-01-10 08:54:06

标签: variables global block

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

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

在控制台中,我得到

09:48:40.085信息javascript.0(22123)script.js.Mein_Haus.test2:主要bevor函数调用555 09: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之后的main 09:48:40.086信息javascript.0(22123)script.js.Mein_Haus.test2:在代码块更改555中 09: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)
} 

1 个答案:

答案 0 :(得分:0)

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