由于浏览器的底层渲染机制,当在渲染引擎在工作渲染页面时,如果遇到了script标签,如果是空标签,它就会首先发起请求去加载运行script标签中的文件里面代码,这一部分是javascript引擎完成的,直到代码加载完成才会继续的切换为渲染引擎继续渲染页面,会阻塞页面渲染。
defer属性 会异步请求文件,不会影响渲染引擎渲染页面,当渲染完页面才会执行文件里面的代码。就是说他会先请求文件并且会等你渲染完页面结束后再去执行文件代码
async属性 会异步请求文件,不会影响渲染引擎渲染页面,当你请求文件结束,渲染页面没有完成他会停止渲染,然后去解析文件代码,接着再去渲染页面。