将参数传递给IIFE
Passing arguments to an IIFE
向存储在变量中的IIFE传递参数的正确语法是什么?
下面的示例告诉我foo
没有定义,不管我是否调用函数:
var bar = (function(foo){
return {
getFoo: function(){
return foo;
}
}
})(foo);
console.log(bar.getFoo(1));
http://jsfiddle.net/eSTkL/
IIFE被立即调用。您在调用时将foo
传递给它,我想它是未定义的。
bar
中存储的不是IIFE,而是IIFE返回的对象,它与foo无关(除了通过闭包访问它之外)。如果您希望foo为1
,请不要将该值传递给getFoo
,而是传递给IIFE本身:
var bar = (function(foo){
return {
getFoo: function(){
return foo;
}
}
})(1);
console.log(bar.getFoo()); // 1
如果您想要一个getter和一个setter(实际上是类似getter/setter的函数),请使用以下命令:
var bar = (function(foo){
return {
getFoo: function(){
return foo;
},
setFoo: function(val) {
foo = val;
}
}
})(1);
console.log(bar.getFoo()); // 1
bar.setFoo(2);
console.log(bar.getFoo()); // 2
foo
没有定义。您应该首先在外部变量环境中定义foo
。
var foo = "foobar";
var bar = (function(foo){
return {
getFoo: function(){
return foo;
}
}
})(foo);
或者直接在自变量位置定义它。
var bar = (function(foo){
return {
getFoo: function(){
return foo;
}
}
})("foobar");
还要注意,您正在向getFoo()
传递一个值,但实际上并没有在方法中使用它。
// v----never gets used
bar.getFoo(1)
为什么不简单:
var bar = (function(){
return {
getFoo: function(foo){
return foo;
}
}
})();
console.log(bar.getFoo(1));
适用于我。
const bar = (foo => ({ getFoo: _ => foo }))("foobar");
console.log(bar.getFoo())
传递给函数的是foo
。
相关文章:
- 函数未将值作为参数传递
- 如何将参数传递到angularJs中的工厂
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- JavaScript常量-作为参数传递或直接使用
- 如何将javascript对象作为参数传递到c#web服务中
- JavaScript中的立即调用函数表达式(IIFE)-传递jQuery
- 将参数传递给函数
- 如何将Gruntfile.js中的参数传递到webdriverio规范
- javascript,将参数传递给函数内部的闭包中的回调
- Javascript-将包含变量的html字符串作为参数传递
- 将字符串作为参数传递给函数onclick event jquery
- 将修改后的数组作为参数传递给函数
- 在嵌套递归指令中将参数传递给父控制器方法
- each()-将额外的参数传递给回调参数
- 代码气味-将布尔控制参数传递给函数
- 如何将自定义参数传递到FullCalendar事件提要
- 将参数传递给函数,同时保留事件处理程序
- 将图标作为参数传递不会;t工作-谷歌地图
- 如何使用按钮将参数传递给函数
- 如何将多个参数传递给输入's onChange处理程序