重复的脚本标签会导致多次运行吗?

Do duplicate script tags cause multiple runs?

如果我有多个 <script> 标签指向同一个 Javascript 资源,浏览器是否会为每个 <script> 标签 运行 一次?还是浏览器去重了?

在这种情况下会发生什么?

<script src="example.js"></script>
<script src="example.js"></script>

example.js 每次被脚本标签 引用时都会得到 运行。浏览器不会尝试对其进行重复数据删除。 (但是它可能只从服务器请求一次。)

即使使用 asyncdefer 属性也是如此。


如果出于某种原因,您希望支持重复的脚本标签,这些标签只会导致代码 运行 一次,您可以采用类似于 include guards for C.

的技术

例如,example.js 可以包含:

if (window.example === undefined) {
  window.example = {
    publicFunction: function publicFunction() {
       // ...
    },
    // ...
  };
}