如何将变量传递到 IIFE 中

How can I pass a variable into a IIFE?

本文关键字:IIFE 变量      更新时间:2023-09-26

我想在myObj中使用闭包,这样我就可以递增myIndex,而不必将myIndex添加到全局命名空间(又名,在 TaskHandler 中)。

这行得通。但我也需要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);
         }
    })()