Случайная последовательность загрузки 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

Вы забыли ; после окна onload выражение функции. Так оно и делается:

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

Итак, функция onload немедленно выполняется с одним параметром, который является результатом другого IEFE. Следовательно,

function() { console.log('1'); }()

выполняется сначала, а сразу после этого выражение функции window.onload. Тогда выражение console.log('2').

Отличный пример, почему важно не забывать точки с запятой в конце строк.