Hea*_*erK 30 javascript jslint
我正在使用JSLint工具来确保我的JavaScript是"严格的".
我收到以下错误但不明白如何解决它:
The body of a for in should be wrapped in an if statement to filter unwanted properties from the prototype
Run Code Online (Sandbox Code Playgroud)
对于以下代码:
for (var i in keypairs) {
...
}
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法如何解决它的JavaScript"严格",并且不会被JSLint标记
Chr*_*ter 40
如果keypairs是一个数组,那么你应该迭代这些元素:
for(var i = 0; i < keypairs.length; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
如果keypairs是哈希,那么JSLint正确地建议你检查你是否在相应的密钥类型上运行(即,确认哈希是预期的类型)
所以像
for(var i in keypairs) {
if(keypairs.hasOwnProperty(i)) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
if验证无论什么标准确保您不访问原型函数等.
Mat*_*hen 16
它希望你使用hasOwnProperty.
for (var i in keypairs) {
if(keypairs.hasOwnProperty(i))
{
// Use i
}
}
Run Code Online (Sandbox Code Playgroud)
像JSLint一样,这是一个推荐,它的适用性取决于你的情况.如果对象的原型中存在不需要的可枚举属性,则非常有用.如果您使用某些JavaScript库,则可能就是这种情况.
问题for...in是您还将遍历原型的属性,并且大部分时间这不是您想要的.这就是你应该用以下方法测试该属性的原因hasOwnProperty:
for (var i in keypairs) {
if(keypairs.hasOwnProperty(i) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23251 次 |
| 最近记录: |