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

Javascript 为什么在函数返回值之前执行下一行?,javascript,jquery,Javascript,Jquery,我有: 运行时,我会收到一条弹出消息:“undefined Here”,然后是一条弹出消息:“5 There”。-添加了更复杂的代码。该函数执行XMLHttpRequest(myRequest)——但设置为Async=false 我认为“5 There”应该首先弹出,“undefined Here”应该是“5 Here”,然后弹出。为什么这样做呢 注意:当我在JSFIDLE中运行您显示的代码时(带有newName和newShortName的定义),我剪掉了XML设置内容,它并没有像您所说的那样做

我有:

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

我认为“5 There”应该首先弹出,“undefined Here”应该是“5 Here”,然后弹出。为什么这样做呢


注意:当我在JSFIDLE中运行您显示的代码时(带有
newName
newShortName
的定义),我剪掉了XML设置内容,它并没有像您所说的那样做。事实上,它用合法字符串显示了两个警报,就像一个人所期望的那样

它表明:

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;
}

因此,您真正的代码似乎不像您问题中的代码那么简单。我猜您可能在某个地方有一些异步代码,确实改变了执行顺序。但您问题中的假设根本不正确。该代码的工作原理与预期一致。

它的工作原理完全相同->Added more code-asynchornous必须是键,但在.open调用中设置为FALSE
5 There
5 Here