不同的异步方法



嘿,希望有人可以帮助解释为什么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'));

这只是编写 IIFE 的两种不同方式。没有有效的区别。

相关内容

  • 没有找到相关文章

最新更新