js的延迟脚本----defer与异步脚本----async

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的延迟脚本----defer与异步脚本----async相关的知识,希望对你有一定的参考价值。

延迟脚本----defer:

一般而言,js的引入<script></script>被放在body的结束符之前,这主要是为了让页面的所有节点被加载完了之后在执行js代码,防止js获取dom节点失败的情况出现。

如果你一定要将<script></script>放在head中,又担心无法获取到dom节点的话,可以如以下代码形式定义延迟脚本defer:

<script type="text/javascript" defer="defer" src="js/hom.js" ></script>

defer的作用在于将脚本延迟到整个页面都解析完毕之后再运行。等同于告诉浏览器立即下载js脚本,但延迟执行。同时defer=“defer”定义的js脚本也会按照它们出现的先后顺序执行。

ps:defer只对外部脚本文件起作用

 

异步脚本----async:

<script type="text/javascript" async="async" src="js/hom.js" ></script>

异步脚本的作用与延迟脚本相对一致,同样将脚本延迟到整个页面都解析完毕之后再运行,也只对外部脚本文件起作用。唯一区别在于,标记为async的脚本并不保证按照它们的先后顺序执行(随机?)

以上是关于js的延迟脚本----defer与异步脚本----async的主要内容,如果未能解决你的问题,请参考以下文章

js高级程序设计

我对JS延迟异步脚本的思考

js异步加载的3种方式(转载)

JavaScript值延迟脚本和异步脚本

JavaScript中defer和async的区别

JavaScript随笔