我想使用带参数的内联函数来设置变量.这是我正在尝试的一个简化版本(在这一点上显然只是伪代码):
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)
你需要像这样调用它.
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)
原因是当你在函数参数中定义相同的名称时,它们只是参数的名称,变量不会插入那里.最后一行是调用传递实际变量的函数.
此外,你刚刚创建了一个闭包.闭包可以访问包含它的函数中声明的所有变量.此代码中另一个有趣的事实是,在包含函数级别定义的变量会被作为闭包函数一部分的变量所遮蔽.原因很明显:闭包处的变量名称与包含函数的变量名称相同.
| 归档时间: |
|
| 查看次数: |
13953 次 |
| 最近记录: |