gpt4 book ai didi

javascript - 将参数传递给 IIFE

转载 作者:可可西里 更新时间:2023-11-01 01:36:25 24 4
gpt4 key购买 nike

将参数传递给存储在变量中的 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

关于javascript - 将参数传递给 IIFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com