将参数传递给内联函数

Fla*_*Cat 6 javascript jquery

我想使用带参数的内联函数来设置变量.这是我正在尝试的一个简化版本(在这一点上显然只是伪代码):

var something = 10;

var something_else = 15;

var dynamic_value = (function(something,something_else){
  if(something == something_else){
    return "x";
  }else{
    return "y";
  }
})();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"dynamic_value"应为"y".问题是在这个内联函数中从未见过变量"something"和"something_else".

如何将参数发送到内联函数?

编辑:我正在使用jquery,虽然这可能不适用于这个问题.

Mat*_*eer 16

调用函数时发送它们

var dynamic_value = (function(something, something_else) {
    ...
 })(value_for_something, value_for_something_else);
Run Code Online (Sandbox Code Playgroud)


clo*_*ure 5

你需要像这样调用它.

var dynamic_value = (function(something,something_else){
  if(something == something_else){
    return "x";
  }else{
    return "y";
  }
})(something,something_else);
Run Code Online (Sandbox Code Playgroud)

原因是当你在函数参数中定义相同的名称时,它们只是参数的名称,变量不会插入那里.最后一行是调用传递实际变量的函数.

此外,你刚刚创建了一个闭包.闭包可以访问包含它的函数中声明的所有变量.此代码中另一个有趣的事实是,在包含函数级别定义的变量会被作为闭包函数一部分的变量所遮蔽.原因很明显:闭包处的变量名称与包含函数的变量名称相同.