如何将变量传递给IIFE?

时间:2016-01-25 03:44:01

标签: javascript

我想在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)

    },

};

1 个答案:

答案 0 :(得分:2)

你的IIFE返回的函数应该接受value参数,而不是IIFE本身:

    doIt : (function () {
        var myIndex = 0;
         return function (value) {
            myIndex++;
             doSomethingWithValue(myIndex, value);
         }
    })()