页面js脚本的执行顺序归纳如下:
js是单线程执行的,在页面加载时,会从上到下执行html中的js脚本,遇到async或defer属性的脚本会异步加载,加载完成后立即执行(async)或等待html解析完成后再执行(defer)。
1.script通过src引入外部文件直接阻塞html的解析,直到外部文件加载完成并执行完成,才会继续解析html。
2.defer和async都是异步加载外部js文件
区别:
- 在于执行时机 defer:defer会等待html解析完成后再执行(dom结构能通过js获取,但是不用等外部资源图片等加载完成在执行defter的脚本)
- async会立即执行,不会等待html解析完成。
- 使用
defer
属性时,脚本会按照它们在 HTML 中出现的顺序依次执行。 - 使用
async
属性时,脚本的加载和执行顺序是不确定的。