标签位置应该放在哪里?

这里面主要涉及的是加载顺序、js是单线程。

由于浏览器解析是自上而下加载解析,如果一个很大的js文件放在head里面,由于js是单线程,那么浏览器会一直解析,而无法加载解析后面的dom tree,以至于页面出现空白,如果放在body最下面,这样dom tree会先加载解析,呈现出页面再加载解析js里面的内容,这样用户体验会更好。

如果js放在head里面,引用了某个dom,但是这时你还没加载dom tree,会报错,可以采用 window.onload = function(){}这样来解决,或者给js设置defer 或者 async来让js异步加载,这样就不会报错了。

1. defer 延迟执行

HTML 4.01 为

在这个例子中,虽然我们把

在以上代码中,第二个脚本文件可能会在第一个脚本文件之前执行。因此,确保两者之间互不依赖非常重要。指定 async 属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。为此,建议异步脚本不要在加载期间修改 DOM。

异步脚本一定会在页面的 load 事件前执行,但可能会在 DOMContentLoaded 事件触发之前或之后执行。

转载于:https://www.cnblogs.com/HuoAA/p/5074266.html

你可能感兴趣的:(javascript)