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

时间:2016-05-04 15:27:31

标签: javascript client-side-scripting

如果我有多个<script>标记指向相同的Javascript资源,那么浏览器是否针对每个<script>标记运行一次?或浏览器是否重复删除?

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

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

1 个答案:

答案 0 :(得分:2)

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

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

如果出于某种原因,您希望支持重复的脚本代码,这些代码只导致代码运行一次,那么您可以使用类似于include guards for C的技术。

例如,example.js可以包含:

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