我正在查看 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'));
作为其自身范围内的未命名函数,似乎永远无法调用它,但它就在那里,包含在样板脚本中。
这是怎么回事?
最佳答案
该函数是 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
然后你会注意到函数体..最后它在参数 document
中调用它的 self 传递, script
, facebook-jssdk
.
该函数所做的只是创建一个脚本,例如。
<script id="facebook-jssdk" src="//connect.facebook.net/en_US/sdk.js"></script>
并将其插入到文档中第一个脚本标记之前。
关于javascript - 如何调用这个未命名的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38947636/