为什么要把js放到body的最下面?我们的项目都是放到head中的呢。是怕页面未加载完,js方法中如果引用页面元素,会报错吗?
这里面主要涉及的是加载顺序、js是单线程。
由于浏览器解析是自上而下加载解析,如果一个很大的js文件放在head里面,由于js是单线程,那么浏览器会一直解析,而无法加载解析后面的dom tree,以至于页面出现空白,如果放在body最下面,这样dom tree会先加载解析,呈现出页面再加载解析js里面的内容,这样用户体验会更好。
如果js放在head里面,引用了某个dom,但是这时你还没加载dom tree,会报错,可以采用 window.onload = function(){}这样来解决,或者给js设置defer 或者 async来让js异步加载,这样就不会报错了。
可能异步加载处理更好些吧。谢谢回答。