Javascript 将参数传递到内联函数

Javascript 将参数传递到内联函数,javascript,jquery,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"; } })(); 在这种情况下,“动态_值”

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

var something = 10;

var something_else = 15;

var dynamic_value = (function(something,something_else){
  if(something == something_else){
    return "x";
  }else{
    return "y";
  }
})();
在这种情况下,“动态_值”应为“y”。问题是变量“something”和“something_other”从未在这个内联函数中出现

如何向内联函数发送参数


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

在调用函数时发送它们

var dynamic_value = (function(something, something_else) {
    ...
 })(value_for_something, value_for_something_else);

你需要这样称呼它

var dynamic_value = (function(something,something_else){
  if(something == something_else){
    return "x";
  }else{
    return "y";
  }
})(something,something_else);
原因是当您在函数参数中定义相同的名称时,它们只是参数的名称,变量不会插入其中。最后一行是调用传递实际变量的函数


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

我想在这里猜测,您希望
动态\u值
只绑定到
某个对象
,而不是
其他对象

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"

哦,这些参数传递到函数的参数中。这很有效。非常感谢。调用这样的函数就像调用任何其他函数一样。语法看起来有点奇怪,但实际上没有什么不同。