【发布时间】:2014-06-28 12:59:17
【问题描述】:
在下面的代码中,我希望看到以下序列
1, 2, loaded
但我明白了
1, loaded, 2
为什么?
<html>
<script>
window.onload = function()
{
alert('loaded');
}
(function ()
{
alert('1');
}());
(function ()
{
alert('2');
}());
</script>
<body>
</body>
</html>
【问题讨论】:
-
console.log也会发生这种情况,而不是阻止alert:jsfiddle.net/9fSgE。 -
@HalimQarroum 有什么区别?这只是您编写它的方式,并且在其上下文
());中执行函数()更有意义,并且在我们同意使用正确标点符号的任何语言中,在 JS 中执行相同操作是有意义的。 lost curl 也一样,最好在声明函数的同一行中使用它。 -
@FelixKling 是的,我也认为这与
alert()的blocking 有关,似乎并非如此。将电话放在head或</body>之前都没有区别 -
玩了一下:如果你在 IIFE 之间添加直接的
console.log调用,你可以看到loaded在第一个 IIFE 终止后被直接调用:jsfiddle.net/9fSgE/1。但是,如果您打开第一个 IIFE,那么loaded调用会出现在最后,而不是在第二个 IIFE 之后:jsfiddle.net/9fSgE/2。不幸的是,这并没有让我更接近解释:-/ -
+1 有趣的问题。不能等待一个体面的解释。最好更新到
console.log版本,因为这对我来说真的很神秘,而alert似乎更有意义。
标签: javascript