javascript中defer是什么

千芳同学_4281

千芳同学_4281

2021-07-21

3785人浏览

原创

defer告诉浏览器Script段包含了无需立即执行的代码,并且与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户;语法“js代码”。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

很多人都已经把 Javascript的用的炉火纯青了,但见到defer未必就知道他是做什么用的;很多人也都遇到过这样的问题,需要直接执行别且操作DOM对象的js 总是报找不到对象的错误,原因大家也都知道就是页面还有没有加载完毕,js的操作对象还在下载中。但很多人都不知道,添加defer标签就能轻而易举的解决这个问题。

<script></script>

中的defer作用是文档加载完毕了再执行脚本,这样回避免找不到对象的问题---有点问题

<button>test</button>
<script>
myButton.click();
</script><script>
myButton.click();
</script><button>test</button>

<script>
function document.body.onload() {
alert(document.body.offsetHeight);
}
</script>

加上 defer 等于在页面完全在入后再执行,相当于 window.onload ,但应用上比 window.onload 更灵活!

defer是脚本程序强大功能中的一个“无名英雄”。它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户。

--但是 文档加载完毕了再执行脚本

请注意两点:

1、不要在defer型的脚本程序段中调用document.write命令,因为document.write将产生直接输出效果。

2、而且,不要在defer型脚本程序段中包括任何立即执行脚本要使用的全局变量或者函数。

一个常用的优化性能的方法是:当脚本不需要立即运行时,在<script>&#26631;&#31614;&#20013;&#35774;&#32622;&ldquo;defer&rdquo;&#23646;&#24615;&#12290; (&#31435;&#21363;&#33050;&#26412;&#27809;&#26377;&#34987;&#21253;&#21547;&#22312;&#19968;&#20010;function&#22359;&#20013;,&#22240;&#27492;&#20250;&#22312;&#21152;&#36733;&#36807;&#31243;&#20013;&#25191;&#34892;&#12290;) &#35774;&#32622;&ldquo;defer&rdquo;&#23646;&#24615;&#21518;&#65292;IE&#23601;&#19981;&#24517;&#31561;&#24453;&#35813;&#33050;&#26412;&#35013;&#36733;&#21644;&#25191;&#34892;&#23436;&#27605;&#12290;&#36825;&#26679;&#39029;&#38754;&#21152;&#36733;&#20250;&#26356;&#24555;&#12290;&#19968;&#33324;&#26469;&#35828;&#65292;&#36825;&#20063;&#34920;&#26126;&#31435;&#21363;&#33050;&#26412;&#26368;&#22909;&#25918;&#22312;function&#22359;&#20013;&#65292;&#24182;&#22312; document&#25110;&#32773;body&#23545;&#35937;&#30340;onload &#21477;&#26564;&#20013;&#22788;&#29702;&#35813;&#20989;&#25968;&#12290;&#22312;&#26377;&#19968;&#20123;&#33050;&#26412;&#38656;&#35201;&#20381;&#36182;&#29992;&#25143;&#25805;&#20316;&#32780;&#25191;&#34892;&#26102;----&#20363;&#22914;&#28857;&#20987;&#25353;&#38062;&#65292;&#25110;&#32773;&#31227;&#21160;&#40736;&#26631;&#21040;&#26576;&#20010;&#21306;&#22495;----&#20351;&#29992;&#35813;&#23646;&#24615;&#38750;&#24120;&#26377;&#29992;&#12290;&#20294;&#24403;&#26377;&#19968;&#20123;&#33050;&#26412;&#38656;&#35201;&#22312;&#39029;&#38754;&#21152;&#36733;&#36807;&#31243;&#20013;&#25110;&#21152;&#36733;&#23436;&#25104;&#21518;&#25191;&#34892;&#65292;&#20351;&#29992;defer&#23646;&#24615;&#24471;&#21040;&#30340;&#22909;&#22788;&#23601;&#19981;&#22826;&#22823;&#12290;</script>

javascript-pro
javascript-pro

专注现代 ECMAScript、异步编程、性能优化和全栈的 JavaScript 专家,适用于现代开发

下载

script中的defer属性默认情况下是false的。按照DHTML编程宝典中的描述,对于Defer属性是这样写的:

Using the attribute at design time can improve the download performance of a page because the browser does not need to parse and execute the script and can continue downloading and parsing the page instead.

也就是说:如果是编写脚本的时候加入defer属性,那么浏览器在下载脚本的时候就不必立即对其进行处理,而是继续对页面进行下载和解析,这样会提高下载的性能。

这样的情况有很多种。比如你定义了很多javascript变量,或者在引用文件(.inc)中写了很多的脚本需要处理,那不妨在这些脚本中加入defer属性,对性能的提高肯定有所帮助。

举例如下:

<script>
var object = new Object();
....
</script>

因为defer属性默认是为false的,那么在这里

<script></script>

显式声明defer属性后等同于

<script></script>

声明了defer属性之后,需要判断是否有别的变量引用了defer脚本块中的变量,否则的话会导致脚本错误的产生。

【推荐学习:javascript高级教程】

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

javascript

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

2025.10.24

827

6

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

2025.09.18

4945

12

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

2025.09.18

2090

13

c++ 全局变量
c++ 全局变量

本专题整合了c++全局变量的使用、定义、作用域等等内容,阅读专题下面的文章了解更多详细内容。

2026.03.17

199

17

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4676

8

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.28

1395

5

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.03

1838

5

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

2023.08.17

10223

11

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

2023.09.01

1020

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 12.4万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.8万人学习