为了账号安全,请及时绑定邮箱和手机立即绑定

js 加载顺序的问题?

js 加载顺序的问题?

慕哥6287543 2018-08-08 11:10:26
为什么global.width 会的到undefined,网页的加载顺序不是自上而下的吗?<script>var global = {}; (function(){   var action = function() {        global.width = document.documentElement.clientWidth;    }   document.addEventListener("DOMContentLoaded", action, flase); })();</script><script>    alert(global.width);  //undefined ??</script>
查看完整描述

1 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

<script>var global = {};//A(function(){   var action = function() {//D
       global.width = document.documentElement.clientWidth;
   }   document.addEventListener("DOMContentLoaded", action, flase);
})();//B</script><script>
   alert(global.width);  //undefined ?? c</script>

A.声明并初始化一个global变量
B.定义了一个立即执行函数,函数被马上执行,为document添加了对DOMContentLoaded的绑定,绑定的函数为action
C.执行本地alert组件,width在global对象中是不存在的
D.等到DOMContentLoaded事件发生时,action回调函数才会被调用

JS事件异步调用且单线程执行,必须等到当前的同步代码执行完毕后,事件的回调才有可能被回调;同理一个事件回调函数被执行,其它JS代码是没机会执行


查看完整回答
反对 回复 2018-09-16
  • 1 回答
  • 0 关注
  • 588 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信