javaScript基础面试题 -- 延迟加载JS有哪些方式?defer async


回答:defer 与 async

js脚本放置在不同位置,对页面加载的不同影响

关于这个问题,首先来介绍一下,js脚本放置在不同位置,对页面加载有什么影响

①:先加载JS,再往后加载DOM
②:首先解析DOM,再解析JS脚本文件,一般都这样写,页面加载先出现结构,提高用户体验

如果JS脚本里面有,要获取#box元素,用②写法,因为如果#box还没解析出来,就开始用JS去获取,就会得到undefined

在这里插入图片描述
如果加上defer或者async就可以用①写法啦!
延迟加载JS的两个重要方法:

①:defer
②:async

在这里插入图片描述

defer与async的区别:

绿色:html的解析
灰色:html停止解析
紫色:JS下载
红色:JS执行
在这里插入图片描述


正常渲染过程:
1、先html解析
2、遇到了js,下载js
3、html解析停止,js执行
4、js执行完毕,html解析在这里插入图片描述


async解析过程:
1、下载js与html解析是并行的
2、下载完js就立刻执行
3、async的执行顺序是:谁先下载完,谁先执行(如果a.js依赖b.js,俩同时导入,就不能用async,因为此时顺序相当重要)
在这里插入图片描述


defer解析过程:
1、下载js过程与html解析过程同步进行(与async相同)
2、当html完全解析完毕,才执行js(与async不同)
3、defer是按照顺序执行的,不存在谁先下载谁先执行
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值