почему невозможно изменить глобальную переменную внутри блока? - PullRequest
0 голосов
/ 10 января 2020

Я новичок в javascript и мне нужна помощь

Я определил глобальную переменную и изменил ее в блоке, но переменная не изменилась после блока, что здесь не так?

в консоли я получаю

09: 48: 40.085 info javascript .0 (22123) скрипт. js .Mein_Haus.test2: вызов функции основного bevor 555 09: 48: 40.085 info javascript .0 (22123) скрипт. js .Mein_Haus.test2: в функции вне блока после изменения 555 09: 48: 40.085 info javascript .0 (22123) скрипт. js .Mein_Haus.test2: main после функции вызов 555 09: 48: 40.086 info javascript .0 (22123) сценарий. js .Mein_Haus.test2: в изменении блока данных 555 09: 48: 40.086 info javascript .0 (22123) сценарий. js .Mein_Haus.test2: в блоке после изменения111

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 голосов
/ 10 января 2020

Функция read является асинхронным обратным вызовом. Он не выполняется сразу, а выполняется после завершения загрузки файла. Когда вы вызываете console.log('main after function call ', обратный вызов еще не был выполнен (как вы можете видеть по порядку полученных журналов), а переменная еще не установлена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...