为什么下一行在函数返回值之前执行?

时间:2015-06-11 22:48:58

标签: javascript jquery

我有:

var newID = saveNewGame(newName, newShortName, "1");  
alert (newID + " Here");

function saveNewGame(newName, newShortName, myNumber) {
    myRequest.open("POST", "savegame.php", false);
    if (myRequest.status === 200) {
            var myNewID = myRequest.responseText;
            alert(myNewID + " There");
            return myNewID;
}

跑步时,我收到一条弹出消息:' undefined Here'然后是弹出消息:' 5那里'。 - 添加了更复杂的代码。该函数执行XMLHttpRequest(myRequest) - 但设置为Async = false。

我认为' 5那里'应首先弹出并且未定义此处'应该说' 5这里'并弹出第二个。为什么这样做呢?

注意:我剪掉了XML设置内容

1 个答案:

答案 0 :(得分:3)

当我在你显示它时运行你的代码(在你的答案中使用newNamenewShortName定义{jsFiddle http://jsfiddle.net/jfriend00/a5da81kp/时,它不会像你说的那样做事实上,它会像人们期望的那样用合法的字符串显示这两个警报。

它显示:

5 There
5 Here

因此,您的真实代码似乎不像您在问题中所拥有的代码那么简单。我猜你可能在某处确实有一些异步代码确实会改变执行顺序。但你问题中的假设是不正确的。该代码可以按预期工作。