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