先贴代码,在html文档底部插入如下代码:
!function(window){
document.addEventListener("DOMContentLoaded", function(){
init4();//这里为何会访问到init4?
}, false)
}(window)
var init4=function(){
console.log(4);
}
init4是函数表达式,按说在预解析的时候,是undefined,只有执行到这一句的时候,才会被赋值为一个函数,但是如果使用了DOMContentLoaded,函数却可以在赋值之前调用后面的函数,是为什么?
DOMContentLoaded?还是别的?
简单说一下你这里的执行顺序。
先是变量提升一个空init4,
然后是匿名自函数,
然后添加了一个监听器DOMContentLoaded,
然后申明了一个匿名函数并赋值给init4,
然后页面DOM响应完毕,触发监听事件的回调。
还有就是 https://developer.mozilla.org...