应该在 body 结束标记之前加载的脚本中使用 defer 吗?

Should defer be used in scripts that are loaded just before the body closing tag?

问题很简单。我一直在研究,在类似的问题中我还没有找到答案。应该在页面底部加载的脚本中使用 defer 吗?它是多余的还是在任何情况下都有意义?

我不认为这有什么不同。但是,当您在 <head> 中延迟时,在 HTML 解析时异步获取脚本,因此它比将 <script> 作为最后一个 <body> 子级更快。 Flavio Copes 在 Efficiently load JavaScript with defer and async 中提供了一个非常好的概述。

浏览器将从上到下解析文档,因此将脚本放在所有主要内容之后将使解析器及时到达 <script>;使浏览器稍后及时下载脚本;将 defer 放在底部造成的延迟绝对是无意义的,因为浏览器不会在 HTML 解析器之前(或期间)执行它们(<script defer>s);

因此最好让浏览器尽快加载(下载)它们(<script defer>),并在所有主要任务完成后立即执行它们。