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