当前位置:首页 > JavaScript

defer js 实现

2026-03-13 21:40:03JavaScript

defer 属性在 JavaScript 中的实现

defer 是 HTML <script> 标签的一个属性,用于控制脚本的加载和执行时机。通过添加 defer 属性,可以延迟脚本的执行,直到 HTML 文档解析完成后再执行。

基本用法

在 HTML 中,可以通过以下方式使用 defer 属性:

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

带有 defer 属性的脚本会在文档解析完成后按照它们在文档中出现的顺序依次执行。

defer js 实现

与普通脚本加载的区别

普通脚本(无 deferasync 属性)会阻塞 HTML 解析,直到脚本下载并执行完毕。而 defer 脚本会在后台下载,同时允许 HTML 继续解析,最后在文档解析完成后按顺序执行。

与 async 属性的区别

asyncdefer 都允许脚本在后台下载而不阻塞 HTML 解析,但它们的执行时机不同:

defer js 实现

  • async 脚本下载完成后立即执行,顺序无法保证。
  • defer 脚本在文档解析完成后按顺序执行。

适用场景

defer 适用于那些依赖 DOM 或其他脚本的代码,因为它能确保脚本在 DOM 完全解析后执行。如果脚本之间没有依赖关系,可以使用 async 以提高页面加载速度。

现代 JavaScript 模块的 defer 行为

对于 type="module" 的脚本,默认行为类似于 defer,无需显式声明:

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

模块脚本会延迟执行,直到文档解析完成,并且按顺序执行。

注意事项

  • defer 仅适用于外部脚本(带有 src 属性的脚本)。
  • 内联脚本(无 src 属性)即使设置了 defer 也会立即执行。
  • 多个 defer 脚本会按照它们在文档中的顺序执行。

标签: deferjs
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…