JS脚本中async与defer有何本质区别?

更新于
2026-09-25 07:41:24
0阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计748个文字,预计阅读时间需要3分钟。

JS脚本中async与defer有何本质区别?

在HTML中,若要引入Google reCAPTCHA,可以使用以下代码:

这段代码中,`async` 和 `defer` 属性共同存在,表示脚本可以异步加载,并且会在文档解析完成后执行。这两个属性不能同时存在多个,因此你只需选择一个添加即可。

一 引言

代码如下

<script src="www.google.com/recaptcha/api.js" async defer></script>

可以看到在script标签中,存在async与defer两个属性,首先这两个属性并共存,说直白点,你一个都不加,或者加两个属性其一,脚本加载规则都会不同,这点我在之前确实没仔细了解过,导致我在实际开发中遇到了这样一个问题:

我在同一个页面需要引用2个script脚本,大致如下:

<script src="www.google.com/recaptcha/api.js"></script> <script src="demo.js"></script>

注意,两个script脚本都没有添加async与defer属性,demo.js中包含了谷歌人机验证的初始化程序,正常来说一定得先加载必要的资源,这样我的验证码才能初始化成功,这就像使用jQuery得先引用jQuery.js是一个道理。

但事实上,因为外网的问题,api.js引用虽然在前面,但下载并不稳定,有时候会出现下载反而比demo.js更晚的情况,这就导致demo.js中的初始化报错,怎么办呢?这就得async与defer出场了,我们先来了解它们的区别。

阅读全文

本文共计748个文字,预计阅读时间需要3分钟。

JS脚本中async与defer有何本质区别?

在HTML中,若要引入Google reCAPTCHA,可以使用以下代码:

这段代码中,`async` 和 `defer` 属性共同存在,表示脚本可以异步加载,并且会在文档解析完成后执行。这两个属性不能同时存在多个,因此你只需选择一个添加即可。

一 引言

代码如下

<script src="www.google.com/recaptcha/api.js" async defer></script>

可以看到在script标签中,存在async与defer两个属性,首先这两个属性并共存,说直白点,你一个都不加,或者加两个属性其一,脚本加载规则都会不同,这点我在之前确实没仔细了解过,导致我在实际开发中遇到了这样一个问题:

我在同一个页面需要引用2个script脚本,大致如下:

<script src="www.google.com/recaptcha/api.js"></script> <script src="demo.js"></script>

注意,两个script脚本都没有添加async与defer属性,demo.js中包含了谷歌人机验证的初始化程序,正常来说一定得先加载必要的资源,这样我的验证码才能初始化成功,这就像使用jQuery得先引用jQuery.js是一个道理。

但事实上,因为外网的问题,api.js引用虽然在前面,但下载并不稳定,有时候会出现下载反而比demo.js更晚的情况,这就导致demo.js中的初始化报错,怎么办呢?这就得async与defer出场了,我们先来了解它们的区别。

阅读全文