JavaScript全局阵列在jQuery获取功能之外失去了价值



我已经读过有关" hoisting"one_answers"范围"one_answers"回调"的信息,但我仍然无法解决一个简单的问题。

首先,我在JavaScript中定义了一个全局数组(在页面顶部):

var thefileNames = [];

我使用jQuery函数获取文件夹的内容并将其存储在此数组中:

jQuery.get(order, function(data) {
  $(data).find("a:contains(.txt)").each(function() {
    thefileNames.push($(this).attr("href"));
    console.log(thefileNames);
  })
});

在控制台中,我将在目录中看到每个文件的更新,直到我最终在末尾得到类似的内容(那里有3个文件):

File1.txt
File2.txt
File3.txt

因此,这些信息清楚地在" thefileNames"中。但是,如果我在代码中的其他任何地方使用:

console.log(thefileNames);

我会得到这个结果:

[]

我不明白这一点,因为" filenames"是全局变量。为什么我离开jQuery函数后,为什么要删除该值?

您是通过异步检索文件名,因此,如果您在代码中的某个地方放置 console.log(thefileNames)执行,您的 thefilenames 数组仍然为空