这个javascript函数在做什么?

这个javascript函数在做什么?,javascript,Javascript,这是我需要修改的前承包商编写的代码摘录。我迷失在({function(e)})和闭包中 代码向验证服务器发出http请求,并返回设置myPlugin对象(r=e)的成员变量的令牌。然后,该函数将foobar.js动态加载到附加到head标记的新脚本标记中。js中的代码引用myPlugin对象的getter函数 我只需要删除http请求和回调,并传递一个参数来设置r的值,然后将新的脚本标记附加到head标记 每次我试图修改loadPluginJsFn函数时,都会出现错误 有人能解释loadPlug

这是我需要修改的前承包商编写的代码摘录。我迷失在({function(e)})和闭包中

代码向验证服务器发出http请求,并返回设置myPlugin对象(r=e)的成员变量的令牌。然后,该函数将foobar.js动态加载到附加到head标记的新脚本标记中。js中的代码引用myPlugin对象的getter函数

我只需要删除http请求和回调,并传递一个参数来设置r的值,然后将新的脚本标记附加到head标记

每次我试图修改loadPluginJsFn函数时,都会出现错误

有人能解释loadPluginJsFn函数在做什么,以及foobar.js末尾的“(myPlugin);”和myPlugin对象末尾的()的用途吗

HTML文件
下面是将该函数转换为可读性更强的代码:

loadPluginJsFn: function(cb) {
  if (typeof cb == "function") {
    cb(function(response) {
      if (response) {
        r = response;
        // Load the script from foobar.js
        var url = "js/foobar.js";
        var t = document.createElement("script");
        t.type = "text/javascript";
        t.src = url;
        document.querySelector("head").appendChild(t);
      }
    });
  }
}
cb
将是执行对
的AJAX请求的函数。收到响应后,它会调用
函数(响应)
。这将插件变量
r
设置为响应,然后加载
js/foobar.js
脚本

foobar.js
然后执行使用
MyPlugin
对象的代码(我假设您省略了这些细节),该代码大概使用
r


总结:它从使用AJAX的
中获取一个值,将其放入
MyPlugin
中的
r
变量中,然后运行使用该插件的代码。

结果表明,删除代码要比添加代码容易得多。感谢@cucaracho和@barmar的批判性见解。这是我想出的解决办法

我不再需要AJAX调用了——这正是我想要删除的。从loadPluginJsFn中删除回调被证明是一个挑战。我打扫了房子,确认它仍然正常工作

loadPluginJsFn(token) {
      r = token,      
      doc = document.createElement("script");
      doc.type = "text/javascript";
      doc.src = "js/foobar.js";
      document.querySelector("head").appendChild(doc);
}

这看起来像是一个像巴别塔或缩小机这样的transpiler的输出。你没有原始代码?它将有更多有意义的变量名和更容易理解的控制结构。要么@Barmar是对的,某个地方的repo中有更好的代码,要么你的顾问滥用了复制/粘贴函数,应该被证明是正确的。调用函数
var foo=function(){}在它的引用后面附加括号:
foo()。因此,如果您在定义
(var foo=function(){})()之后加上括号,将其注册为对象后立即调用。因此它被称为立即调用的
函数
。我认为它所做的是对
执行一个AJAX请求,该请求将返回JavaScript文件的URL,然后加载该JS文件。但我不确定
foobar.js
是否适合。我认为这看起来像是某种类型的模糊代码,谢谢您的确认。这就是github中的内容@谢谢你的解释。这在上下文中是完全有道理的。(为保护我而消毒)
loadPluginJsFn: function(cb) {
  if (typeof cb == "function") {
    cb(function(response) {
      if (response) {
        r = response;
        // Load the script from foobar.js
        var url = "js/foobar.js";
        var t = document.createElement("script");
        t.type = "text/javascript";
        t.src = url;
        document.querySelector("head").appendChild(t);
      }
    });
  }
}
loadPluginJsFn(token) {
      r = token,      
      doc = document.createElement("script");
      doc.type = "text/javascript";
      doc.src = "js/foobar.js";
      document.querySelector("head").appendChild(doc);
}