我想在 myObj
中使用闭包,这样我就可以增加 myIndex
,而不必将 myIndex
添加到全局命名空间(又名,在任务处理程序
)。
这有效。但我还需要将 myValue
传递给闭包。我认为通过 (function (param) { })(myValue);
传递它是这样做的方法。但它是未定义的。
TaskHandler.myFunction(value);
TaskHandler = {
myFunction : function (value) {
this.myObj.run(value);
},
myObj : {
run : function (value) {
this.doIt(value);
},
doIt : (function (value) {
var myIndex = 0;
return function () {
myIndex++;
doSomethingWithValue(myIndex, value); //value undefined
}
})(value)
},
};
最佳答案
IIFE 返回的函数应该接受值参数,而不是 IIFE 本身:
doIt : (function () {
var myIndex = 0;
return function (value) {
myIndex++;
doSomethingWithValue(myIndex, value);
}
})()
关于javascript - 如何将变量传递到 IIFE 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984744/