Javascript 不同异步方法

Javascript 不同异步方法,javascript,api,asynchronous,social-networking,Javascript,Api,Asynchronous,Social Networking,嘿,希望有人能帮助解释为什么Facebook和Twitter的JS API异步函数调用中的这些示例是不同的,以及它们在性能上的细微差别 (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.face

嘿,希望有人能帮助解释为什么Facebook和Twitter的JS API异步函数调用中的这些示例是不同的,以及它们在性能上的细微差别

(function(d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if (d.getElementById(id)) return;
    js = d.createElement(s); 
    js.id = id;
    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
    fjs.parentNode.insertBefore(js,fjs);
}(document, 'script', 'facebook-jssdk'));

!function(d,s,id){
    var js,fjs=d.getElementsByTagName(s)[0];
    if(!d.getElementById(id)){
        js=d.createElement(s);
        js.id=id;
        js.src="//platform.twitter.com/widgets.js";
        fjs.parentNode.insertBefore(js,fjs);
    }
}(document,"script","twitter-wjs");
正如您所看到的,一个是从结构(){}()开始的;另一个是

我不知道这两个是否更好

此外,我正在尝试一次加载5个社交网络按钮,并尝试此方法以提高性能,如有任何建议,将不胜感激:

(function(d, s) {
var j, h = d.getElementsByTagName(script)[0],
    f = d.createDocumentFragment(),
    add = function(u, i) {
        if (d.getElementById(i)) {
            return;
        }
        j = doc.createElement(s);
        j.src = u;
        i && (j.id = i);
        f.appendChild(j);
    };

    add('http://apis.google.com/js/plusone.js');
    add('http://connect.facebook.net/en_US/all.js#xfbml=1', 'facebook-jssdk');
    add('http://platform.twitter.com/widgets.js', 'twitter-wjs');
    add('http://platform.linkedin.com/in.js');
    add('http://assets.pinterest.com/js/pinit.js');


    h.parentNode.insertBefore(f, h);
}(document, 'script'));

这只是两种不同的生活方式。没有有效的区别。

逐行阅读前两个函数,它们完全相同,只是句法上有细微的差异。谢谢你的回答。