Javascript 全局变量在函数中赋值时不更新

Javascript 全局变量在函数中赋值时不更新,javascript,jquery,arrays,global-variables,Javascript,Jquery,Arrays,Global Variables,我正在尝试使用jQuery在.txt文件中创建一个基于离线的数组。数组是一个游戏的答案列表 控制台第一次记录的是包含内容的数组,第二次记录的是空数组。为什么answers没有全局更新 这是我的密码: //create global variable answers var answers = new Array; //assign a value to answers from text file $.get("wordsEn.txt", function(txt){ answers =

我正在尝试使用jQuery在
.txt
文件中创建一个基于离线的数组。数组是一个游戏的答案列表

控制台第一次记录的是包含内容的数组,第二次记录的是空数组。为什么
answers
没有全局更新

这是我的密码:

//create global variable answers
var answers = new Array;
//assign a value to answers from text file
$.get("wordsEn.txt", function(txt){
    answers = txt.split('\n');
    console.log(answers);
});
console.log(answers);
console.log(应答)在回调之外发生在赋值之前


$.get
立即返回,但它的回调不一定立即运行;获取数据可能需要一些时间。同时,外部
console.log(answers)正在运行

您需要在同步函数中调用函数,例如

    //create global variable answers
var answers = new Array;
var cb = function(){
    console.log(answers);
};
//assign a value to answers from text file
$.get("wordsEn.txt", function(txt){
    answers = txt.split('\n');
    console.log(answers);
    if(cb)
        cb();
});

您有两个对
console.log
的调用,因此一个问题是您无法知道哪一个先发生,因为一个是同步发生的,另一个是异步发生的。对于初学者,如果您是这样调试的,您应该在日志语句中添加一些附加信息:

console.log('1: ' + answers);
console.log('2: ' + answers);
这样,当您看到输出时,您将知道是2先发生,还是1先发生


正如其他人所说,
$.get
代码中使用的内部函数是异步的,这意味着它将在ajax请求完成后运行,有时可能快,有时慢,您无法知道。

对函数的调用不是同步发生的,所以当你登录时它还没有被更新。实际上,它第一次会记录空数组,第二次会记录
控制台中的内容。log()
并不是我想要做的全部事情(有一个基于该变量创建的完整游戏)我是否必须将以下所有代码放入
$。get()
函数中?是的,您应该将所有代码放在$.get()中,或者在其中调用一个函数。