Javascript奇怪的加载序列

时间:2014-05-10 23:36:29

标签: javascript

在下面的代码中,我希望看到以下序列

1, 2, loaded 

但我得到

1, loaded, 2

为什么?

<html>
<script>
window.onload = function()
{
    alert('loaded');
}

(function ()
{
    alert('1');
}());

(function ()
{
    alert('2');
}());

</script>
<body>
</body>
</html>

1 个答案:

答案 0 :(得分:18)

您在窗口;函数表达式后忘记了onload。所以它变成了:

window.onload = function () {
    console.log('loaded');
}(function() { console.log('1'); }())

所以onload函数立即执行一个参数,这是另一个IEFE的结果。因此

function() { console.log('1'); }()
首先执行

,然后立即执行window.onload函数表达式。然后console.log('2')表达。

很好的例子,为什么重要的是不要忘记行末的分号。