脚本异步标记是否保留脚本执行顺序?

时间:2013-02-26 21:13:28

标签: html5 script-tag

除了组合,缩小,gzipping和缓存之外的所有问题。将脚本标记为异步仍然会保留脚本执行顺序吗?

假设我有一个页面,其中jquery包含在顶部,然后是底部的其他脚本,假设存在jquery。

如果我用异步属性标记jquery脚本,我知道浏览器将继续解析我的html。但是,浏览器是否会保证在我的其他脚本执行之前加载jquery,或者可能无序发生导致未定义的$

2 个答案:

答案 0 :(得分:1)

使脚本异步并不能保证任何同步执行,除了脚本本身。

<script async src="jquery.js"></script>
<script>
    $.noop() // will definitely throw an error
</script>

<script async src="jquery.js"></script>
<script src="someOtherNonAsyncScript.js"></script>
<script>
    $.noop() // may or may not throw an error
</script>

答案 1 :(得分:0)

没有。它将异步执行。

  

async和defer属性是指示的布尔属性   如何执行脚本。 (...)

http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-async