javascript - 如何将变量传递到 IIFE 中?

标签 javascript

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

相关文章:

javascript - Vue.js 中相互依赖的属性

javascript - 如何在 native react 中隐藏特定屏幕上的底部导航栏?

javascript - 如何将 D3 图表的 JS 数组更改为 JS 对象

Javascript 日期加 2 周(14 天)

javascript - jQuery 暂停函数执行并在暂停时执行其他操作

javascript - Materialize 中的 OnSelect Datepicker 在两个输入之间设置最大日期 + 9

JavaScript 数组迭代

php - 将 JavaScript 变量传递给 Ajax 数据 :

javascript - 无法在 Angular 中使用子组件的选择器

c# - 分组为数组