使用IIFE时避免在循环中定义函数

马特·哈里森(Matt Harrison)

我有以下代码:

for (i = 0; i < 5; i++) {
    this.hands[0].cards[i].img.on('mousedown', (function (i) {
        var j = i;
        return function (event) {
            self.hands[0].cards[j].holdCard();
        };
    })(i));
}

这可以满足我的需求,但是JSHint抱怨:

[L1164:C10] W083:请勿在循环内执行功能。

如何通过以不同的方式重写JSHint来保持满意?

bfavaretto

您可以在循环外用单独的函数替换IIFE:

function createHandler(j, self) {
    return function (event) {
        self.hands[0].cards[j].holdCard();
    };
}
for (i = 0; i < 5; i++) {
    this.hands[0].cards[i].img.on('mousedown', createHandler(i, this));
}

有用的参考:JSLint错误说明(感谢user1671639的链接)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在 for 循环中定义函数

在for循环中定义函数

如何避免在此循环中创建函数?

使用递归函数时如何避免模块之间的循环依赖?

遍历Collection,避免在循环中删除对象时避免ConcurrentModificationException

避免在for循环中使用if语句?

使用requirejs的循环中的函数

Java:在循环中修改列表时避免使用 ListIterator 并发修改异常

有什么方法可以避免使用break;在while循环中,当测试包括scanf()时?

无法在foreach循环中定义函数

嵌套 for 循环中的自定义函数

如何在Python的循环中定义函数

如何避免在ng-repeat循环中呈现定义标签?

在循环中定义名称时移动文件

Javascript在循环中第二次执行函数时抛出未定义的错误

使用?时的无限循环:“ for”循环中的条件

在while循环中使用try catch语句时无限循环catch函数

编写云函数时如何避免循环?

在循环中打开文件时如何避免分段错误?

使用for循环循环时如何避免重复?

使用 self 参数在循环中创建和调用自定义函数名称

在循环中调用函数“未定义不是函数”

通过避免使用for循环来定义矩阵

当使用接收器()在foreach循环中捕获消息时,如何避免“接收器堆栈已满”错误

在while循环中定义变量时如何定义?

在for循环中使用rep()函数?

在 For 循环中使用异步函数

在For循环中使用If创建lambda函数

在循环中使用R的tryCatch函数