在下面的代码中,我希望看到以下序列
1, 2, loaded
Run Code Online (Sandbox Code Playgroud)
但我明白了
1, loaded, 2
Run Code Online (Sandbox Code Playgroud)
为什么?
<html>
<script>
window.onload = function()
{
alert('loaded');
}
(function ()
{
alert('1');
}());
(function ()
{
alert('2');
}());
</script>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
dfs*_*fsq 18
你;在窗口onload函数表达后忘了.所以它变成:
window.onload = function () {
console.log('loaded');
}(function() { console.log('1'); }())
Run Code Online (Sandbox Code Playgroud)
因此,onload函数立即执行一个参数,这是另一个IEFE的结果.于是
function() { console.log('1'); }()
Run Code Online (Sandbox Code Playgroud)
首先执行,然后立即执行该window.onload函数表达式.然后console.log('2')表达.
很好的例子,为什么重要的是不要忘记行尾的分号.