我正在审核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'));
作为一个自己范围内的未命名函数,看起来似乎永远不会被调用,但它包含在样板脚本中。
这里发生了什么?
答案 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个参数d
,s
,id
那么你会注意到函数体。最后它调用它自动传递args {{ 1}},document
,script
。
所有这个功能都会创建一个脚本,如。
facebook-jssdk
并将其插入文档中的第一个脚本标记之前。