javascript 代码的这两个片段有什么区别?

What is the difference between these two snippets of javascript code?

我知道他们或多或少做同样的事情,只是方法不同而已。

<script src="example.js" type="text/javascript" charset="UTF-8"></script>
<script type="text/javascript">
function OptanonWrapper() { }
</script>

<script type="text/javascript">

var x = x || [];
  (function(){
        setTimeout(function(){
      var d = document, f = d.getElementsByTagName('script')[0], s = d.createElement('script'); s.type = 'text/javascript';

      s.async = true; s.src = "example.js"; f.parentNode.insertBefore(s,f);

    }, 1);

  })();

</script>

--

我不是原生 js 程序员,因此非常感谢您的帮助。

在第一个示例中,第二个 <script> 标记只会在 example.js 完成加载后执行。

在第二个示例中,加载 example.js<script> 标签是动态创建的并插入到文档中(以不必要的迂回方式,如果我可以添加我自己的两分钱的话),并且它将开始异步加载,即它不会延迟任何 <script> 标签的执行。这样可以达到同样的效果:

<script src="example.js" async></script>
<script>
    function OptanonWrapper() { }
</script>

阅读 MDN 上的 <script> 元素了解更多详情:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script