所有关于组合、缩小、压缩和缓存的问题都放在一边。将脚本标记为异步是否仍保留脚本执行顺序?
假设我有一个页面,其中 jquery 包含在顶部,然后是底部的其他脚本,假设存在 jquery。
如果我用 async 属性标记 jquery 脚本,我知道浏览器将继续解析我的 html。但是,浏览器是否会保证在我的其他脚本执行之前加载 jquery,或者可能会发生乱序导致 undefined $
?
所有关于组合、缩小、压缩和缓存的问题都放在一边。将脚本标记为异步是否仍保留脚本执行顺序?
假设我有一个页面,其中 jquery 包含在顶部,然后是底部的其他脚本,假设存在 jquery。
如果我用 async 属性标记 jquery 脚本,我知道浏览器将继续解析我的 html。但是,浏览器是否会保证在我的其他脚本执行之前加载 jquery,或者可能会发生乱序导致 undefined $
?
使脚本异步不保证任何同步执行,除了脚本本身。
<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>
不,它将异步执行。
async 和 defer 属性是布尔属性,指示应该如何执行脚本。(...)
http://www.whatwg.org/specs/web-apps/current-work/multipage/scripting-1.html#attr-script-async