以下几行来自官方jQuery网站
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.4.2.min.js"><\/script>');</script>
我不确定HTML解析顺序,或者我应该说脚本执行顺序。
问题是:第2行是否会等待第1行加载?我对此表示怀疑。
如果第1行仍在加载(比如它是3000KB,并且需要很长时间),则第2行已经执行。 window.jQuery总是为false,因此总是包含第二个js。如果这是真的,无论如何,第1行是什么?
答案 0 :(得分:11)
脚本按文档中的顺序执行。浏览器在执行脚本之前等待脚本加载。
如果不是这种情况,则不能让任何两个文件相互依赖。您必须将所有内容放在同一个文件中,否则脚本执行顺序几乎是随机的。
答案 1 :(得分:1)
是的,它将等待解析任何html,直到加载和解析脚本。这就是为什么你应该在页面末尾加载externa脚本以便脚本不会阻止html渲染的原因之一。
答案 2 :(得分:0)
让我们谈谈更传统的处理方式,而不使用属性defer
或async
浏览器将:
下载script
,阻止其他资源下载
解析脚本
执行脚本
参见Ch1,从High Performance JavaScript
加载和执行这是另一个很好的参考资料12.3。从JavaScript: The Definitive Guide, 4th Edition
执行JavaScript程序