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

标签 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'));

作为其自身范围内的未命名函数,似乎永远无法调用它,但它就在那里,包含在样板脚本中。

这是怎么回事?

最佳答案

该函数是 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/

相关文章:

javascript - 你能帮忙分析一下这个模式吗?

javascript - 在 Mongoose 模式默认日期值中将月份添加到当前日期

swift - XCode 不断给我 "fbsdkcorekit/fbsdkcorekit.h not found",即使它在项目中。

ios - Facebook SDK iOS 登录并安装了 Facebook 应用程序

ios - iOS 中的 Facebook 登录

javascript - 将对象数组转换为按月和年分组的对象数组

javascript - 如何同步Nodejs函数

facebook - Facebook SDK 是否需要 HTTPS?

javascript - Primefaces javascript 延迟解析

Facebook OAuth 突然停止工作