变量在功能之外不起作用

时间:2019-05-03 00:39:54

标签: javascript

我有一个加载JSON文件并将其提供给名为articles的变量的函数。当我在函数内部记录文章时,它会显示我的json文件,但是当我在函数外部记录日志时,它根本不会显示任何内容

我试图在函数内部的文章之前使用let和var,但这似乎不起作用

var articles = ""
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
  if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
    articles = xmlhttp.responseText;
    console.log(articles);
  }
};
console.log(articles);
console.log(xmlhttp);
xmlhttp.open("GET","articles.json",true);
xmlhttp.send();

我希望能够通过使用文章在函数之外调用json文件,这样我就不必每次都具有xml.responseText类型。

1 个答案:

答案 0 :(得分:3)

简而言之,JavaScript无法同步运行。

这意味着,当您在功能之外记录文章时,尚未设置articles变量(http请求尚未完成)。

您为什么希望可以全局访问文章?

http请求响应后,您可以选择将文章传递给处理方法,如下所示:


var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
  if(xmlhttp.status == 200 && xmlhttp.readyState == 4){
    var articles = xmlhttp.responseText;
    processArticles(articles)
  }
};
xmlhttp.open("GET","articles.json",true);
xmlhttp.send();

function processArticles(articles) {
  // Do something with articles here
}