Javascript奇怪的声明和调用函数的方式

时间:2013-03-19 17:56:27

标签: javascript function module frontend

您好我是javascript的新手,我正在尝试维护某些代码,但我似乎无法弄清楚他们在做什么。

他们似乎正在声明一个像这样的函数:

(function(Module) {
    Module.register(...) {
       ....
       return ...;
    };
    Module.register(...) {
       ....
       return ...;
    };
 }(hb.Core));

如果你想创建一个名为Module.register的函数两次(我认为他们正在尝试这样做),你会不会这样做?

function myFunction(Module) {
     Module.register(...) {
        ...
     };
     Module.register(...) {
        ...
     };
}
myfunction(Module);

另外,不知道这是否真的相关,但他们正在使用沙箱模型(他们有不同的模块只通过沙箱与应用程序核心通信)。

希望有人可以提供帮助。我对Javascript和前端开发都很陌生,我很困惑。

2 个答案:

答案 0 :(得分:2)

重复What is the purpose of a self executing function in javascript?

这是一个自动执行匿名函数调用。您的示例是一个函数声明,您已为该函数指定了一个名称,因此它不再是匿名的。当需要将变量的范围仅限于自执行函数中的任何内容时,可以使用自执行函数。

答案 1 :(得分:0)

如果你的意思是

(function(Module) {}(hb.Core));

它是一个自调用函数,为其hb.Core参数接收Module值。 在javascript函数中声明范围,因此这是上述问题的主要原因。

该函数内部的变量不能在其外部访问,这意味着在其范围之外