10

这个线程中,我找到了一个我想要使用的 JavaScript 代码片段。

代码如下所示:

(function(global) {
  // the function code comes here
})(this);

如何调用此函数来执行代码?我必须为这个global变量传递什么?

4

3 回答 3

19

该函数会立即执行,您不要通过调用它来执行它。

它是一个函数字面量定义,后跟两个导致该函数立即调用的括号。阅读更多:立即调用函数表达式 (IIFE)

无论您在其中放置什么代码都会立即运行。任何放在调用括号中的东西都会作为参数传递给函数。假设您的示例代码是在全局范围内定义的,thiswindow对象,并且global在函数体内被引用。这是封装程序以避免变量冲突、强制严格模式等的好方法。

于 2012-04-25T11:45:41.303 回答
16

这个构造定义了一个函数:

function(global) {
  // the function code comes here
}

this并立即调用它,作为参数传递:

([function])(this)

标识符global只是函数体内此参数的名称。例如,尝试

console.log(this); // outputs something
(function(global) {
    console.log(global); // outputs the same thing as above
})(this);
于 2012-04-25T11:47:03.333 回答
1

如何调用此函数来执行代码?

它已经被调用:(this)

我必须为这个全局变量传递什么?

this

于 2012-04-25T11:46:08.877 回答