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.6k
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 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题