JavaScript_笔记1 <script>标签的属性async、defer和src

关于script标签

通过script标签,可以在HTML页面上加入JavaScript。script主要有6个属性:async,defer,src,charset,language,type。
今天重点介绍总结 async,defer和src三个属性,并且着重区分async和defer的区别特点。

属性async,defer以及src是什么?

async:表示立即下载脚本,只适用于外部脚本(src)
defer:表示脚本可以延迟到文档页面完全被解析和显示后再执行,只适用于外部脚本
src:载入外部文件

情况①不加async和defer

<script src="script.js"></script>

当script标签不加async和defer属性时
浏览器在读到script标签时,就会停止HTML的解析,进而去下载脚本文件并执行,脚本文件执行完毕后,再继续解析HTML;

情况②只加async

<script src="script.js" async></script>

当script标签有async属性时,表示浏览器在遇到script标签时,会异步下载脚本,下载完后立即执行脚本。
即:遇到脚本就下载,下载的同时可以继续解析HTML;脚本下载完后,HTML解析暂停,立即执行脚本。

情况③只加defer

<script src="script.js" defer></script>

当script标签有defer属性时,也是浏览器在遇到script标签时,会异步下载脚本,但下载完并不立即执行脚本。
即:遇到脚本就下载,下载的同时可以继续解析HTML;但要等到DOM解析完成才会执行脚本。

图片总结①~③

情况①
情况②
在这里插入图片描述
总结:

  1. async和defer都可以让浏览器在遇到script标签时,异步下载脚本(不影响HTML的解析)。

  2. async使得脚本下载完就立即执行脚本,HTML解析则暂停

  3. defer是要在DOM解析完毕后,才执行,并没有在下载完毕后立即执行。

  4. 若没有async或defer,则无法异步下载脚本。浏览器就得停下HTML的解析,转而下载脚本,并下载完立即执行。

属性src的一点提醒

在书上看到的:带有src属性的script元素不应该在< script >和< / script >之间再包含额外的JS代码。如果包含了额外的JS代码,只会下载并执行外部脚本文件,嵌入的代码会被忽略

猜你喜欢

转载自blog.csdn.net/qq_43263320/article/details/112665027