JavaScript:变量不在函数外部工作?

JavaScript:变量不在函数外部工作?,javascript,json,Javascript,Json,为什么我不能调用我在函数中定义的变量?这是我的密码 var username; var rank; var steamid; var avatar; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseTex

为什么我不能调用我在函数中定义的变量?这是我的密码

  var username;
  var rank;
  var steamid;
  var avatar;

  var xhr = new XMLHttpRequest();

  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {

        if (this.responseText == "null") {
        } else {
            var infoArr = JSON.parse(this.responseText);
            var username = infoArr.username;
            var rank = infoArr.rank;
            var steamid = infoArr.steamid;
            var avatar = infoArr.avatar;
            testIt();
      }
    }
};

xhr.open("GET", "../getInfo.php", true);
xhr.send();

function testIt() {
  alert(username);
}
函数testIt()正在返回:未定义


我的代码所做的是从JSON编码的页面获取信息并生成变量。

如果要在函数外部使用变量,则需要在函数外部定义它们

var username, rank, steamid, avatar, infoArr, username, rank, steamid, avatar;

  var xhr = new XMLHttpRequest();

  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {

        if (this.responseText == "null") {
        } else {
            infoArr = JSON.parse(this.responseText);
            username = infoArr.username;
            rank = infoArr.rank;
            steamid = infoArr.steamid;
            avatar = infoArr.avatar;
            testIt();
      }
    }
};

xhr.open("GET", "../getInfo.php", true);
xhr.send();

function testIt() {
  alert(username);
}

在回调函数中,使用
var
将这些变量的作用域设置为local。在回调函数中删除用户名、排名、蒸汽ID、头像前面的var。我的意思是。。。当然不行了
testIt
无法访问该变量。您应该将其传递给
testIt
,或者删除
testIt
,然后将该逻辑移到回调中。不要通过删除
var
移动到全局变量…感谢您的回答。现在解决:D