将参数传递给内联函数

时间:2012-12-21 17:43:26

标签: 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";
  }
})();

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

如何向内联函数发送参数?

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

3 个答案:

答案 0 :(得分:15)

在调用函数

时发送它们
var dynamic_value = (function(something, something_else) {
    ...
 })(value_for_something, value_for_something_else);

答案 1 :(得分:5)

你需要这样打电话。

var dynamic_value = (function(something,something_else){
  if(something == something_else){
    return "x";
  }else{
    return "y";
  }
})(something,something_else);

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

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

答案 2 :(得分:0)

我在这里猜测你希望dynamic_value只绑定到something而不是something_else

var base_value = 10;

var something_else = 15;

var dynamic_value = (function(base_value){
    return function (compare) {
        if(base_value == compare){
            return "x";
        } else {
            return "y";
        }
    };
})(base_value);

alert(dynamic_value(something_else));   // "y"
alert(dynamic_value(10));   // "x"