Javascript 为什么对第三方JS使用异步加载程序

Javascript 为什么对第三方JS使用异步加载程序,javascript,asynchronous,Javascript,Asynchronous,几乎所有第三方托管的脚本都使用以下通用格式来加载资源 <script type="text/javascript"> (function(a,b,c,d){ a='//third.com/party.js'; b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.async=true; a=b.getElementsByTagName(c)

几乎所有第三方托管的脚本都使用以下通用格式来加载资源

<script type="text/javascript">
    (function(a,b,c,d){
    a='//third.com/party.js';
    b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.async=true;
    a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
    })();
</script>

(功能(a、b、c、d){
a='//third.com/party.js';
b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;d.async=true;
a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
})();
为什么这比这更可取:

<script type="text/javascript" src="//third.com/party.js" async></script>


我的猜测是,它将异步加载支持扩展到了没有异步加载支持的浏览器,但今天使用的几乎所有浏览器都支持异步属性。

传统上,这种类型的模糊脚本用于将第三方库注入Wordpress或其他CMSE等框架中

在Wordpress中,可以处理这些脚本标记,例如,通过应用带有
script\u loader\u标记的过滤器
hook。举个例子

因此,根据脚本的处理方式,最终可能会出现从脚本中剥离属性的情况。然后它就不再是
async

通过将脚本封装在函数中,可以在某种程度上保护它不被篡改。尤其是如果您无法控制如何将其注入页面。而且,该代码可以与所有其他页面脚本一起提取、连接或缩小