如何调用这个未命名的函数?

时间:2016-08-14 23:49:23

标签: javascript facebook

我正在审核Facebook提供的脚本,以便运行它的授权。我遇到了令人费解的代码:

(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/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

作为一个自己范围内的未命名函数,看起来似乎永远不会被调用,但它包含在样板脚本中。

这里发生了什么?

1 个答案:

答案 0 :(得分:1)

该功能是Immediatly Invoked Function Expression

(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/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));

如果你注意到该函数有3个参数dsid那么你会注意到函数体。最后它调用它自动传递args {{ 1}},documentscript

所有这个功能都会创建一个脚本,如。

facebook-jssdk

并将其插入文档中的第一个脚本标记之前。