我有以下代码:

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抱怨:



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

最佳答案

您可以在循环外用单独的函数替换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 Errors Explanation(感谢user1671639提供的链接)。

09-12 01:40