JavaScript:JSLint 错误“for in 的主体应包含在 if 语句中以从原型中过滤不需要的属性”

新手上路,请多包涵

我正在使用 JSLint 工具来确保我的 JavaScript 是“严格的”。

我收到以下错误,但不知道如何解决:

 The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype

对于以下代码:

 for (var i in keypairs) {
    ...
}

任何人都知道如何解决这个问题,使其成为“严格”的 JavaScript,并且不会被 JSLint 标记

原文由 HeatherK 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
1 个回答

如果 keypairs 是一个数组,那么您应该真正迭代元素,例如:

 for(var i = 0; i < keypairs.length; i++) {
  ...
}

如果 keypairs 是一个散列,那么 JSLint 正确地建议您检查您是否在适当的键类型上操作(即确认散列是预期的类型)

所以像

for(var i in keypairs) {
  if(keypairs.hasOwnProperty(i)) {
    ...
  }
}

if 正在验证任何标准,确保您没有访问原型函数等。

原文由 Chris Baxter 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题