欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

浏览器加载 JS 文件的先后顺序同具体的解析和执行有什么关系?

shiping1 的头像

浏览器加载 JS 文件的先后顺序同具体的解析和执行有什么关系?

附:最近在研究 backbone.js,它是依赖于 underscore.js 的,如果两者引入的先后顺序颠倒 ,则会报错。
按票数排序

2 个回答

 

长天之云head, body { content : '\20' }

<script> 标签引入脚本有三种情况:

立即执行
<script src="a.js">
<script src="b.js">
顺序:保证先后顺序。解析:HTML 解析器遇到它们时,将阻塞(取停止解析),待脚本下载完成并执行后,继续解析标签之后的文档。

推迟执行
<script defer src="a.js">
<script defer src="b.js">
顺序:保证先后顺序。解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载),待文档解析完成之后,执行脚本。

尽快执行
<script async src="a.js">
<script async src="b.js">
顺序:不保证先后顺序。解析:HTML 解析器遇到它们时,不阻塞(脚本将被异步下载,一旦下载完成,立即执行它),并继续解析之后的文档。

有一张图可以帮助理解这些情形:*来源:peter.sh/experiments/as

====
兼容性参考: developer.mozilla.org/e
 
加载顺序就是按js出现在html里的先后顺序
执行时同一个块里的所有定义语句先执行 然后再按顺序执行其他语句
与事件绑定的语句在触发时才解析和执行
来自 http://www.zhihu.com/question/20531965
普通分类: