以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - 前端面试问题
119. script标签的属性`async` 和 `defer`的区别是什么?

asyncdefer 都是在加载外部脚本的时候,为了减少页面阻塞和提高渲染速度而提出的标签属性。

async 属性表示这个脚本是异步执行,不会影响页面的渲染,而是在后台下载,并在下载完成后立即执行。如果有多个 async 脚本,它们的执行顺序是不确定的。

defer 属性也是异步执行,但是它会等待整个页面解析完毕后,按照顺序依次执行。在下载过程中不会阻塞页面渲染。这意味着,在执行脚本之前,文档对象模型(DOM)已经完全加载。

总体来说,如果脚本没有相互依赖,且不需要直接操作 DOM,那么可以选择使用 async。如果脚本需要直接操作 DOM 或者有相互依赖,那么就需要使用defer