摘录如下:

可以很清晰的看出:
<script>: 脚本的获取和执行是同步的。此过程中页面被阻塞,停止解析。<script defer = "defer">:脚本的获取是异步的,执行是同步的。脚本加载不阻塞页面的解析,脚本在获取完后并不立即执行,而是等到DOMready之后才开始执行。<script async = "async">: 脚本的获取是异步的,执行是同步的。但是和<script defer = "defer">的不同点在于脚本获取后会立刻执行,这就会造成脚本的执行顺序和页面上脚本的排放顺序不一致,可能造成脚本依赖的问题。
参考文献:
Asynchronous and deferred JavaScript execution explained

本文详细解释了不同类型的脚本标签<script>、<script defer='defer'>及<script async='async'>在网页加载过程中的行为差异。对于<script>标签,脚本的获取和执行是同步进行的,导致页面加载阻塞;<script defer='defer'>则实现了脚本的异步获取与同步执行,且脚本会在DOMready之后执行;而<script async='async'>实现了脚本的异步获取和执行,但可能导致脚本执行顺序混乱。
1079

被折叠的 条评论
为什么被折叠?



