Han*_*ans 14 javascript jslint
我收到了这个错误,不知道原因是什么.任何的想法?
第2127行的问题18:在变量'sport'中不好.for(sport in sugested_sports)
// make array
var sugested_sports = data.split(",");
// pre build DIV
var sporty_items = '';
for (sport in sugested_sports)
{
if (sugested_sports.hasOwnProperty(sport)) {
sporty_items += '<a href="#'+identifier[1]+'">'+sugested_sports[sport]+'</a>';
}
}
// insert DIV
DIVsuggestions.html(sporty_items);
Run Code Online (Sandbox Code Playgroud)
多谢.
Poi*_*nty 19
尝试
var sport;
for (sport in sugested_sports)
Run Code Online (Sandbox Code Playgroud)
这将处理缺少的变量声明并将其置于for循环之外(请参阅jsLint错误"无法设置属性'优先'未定义").
Jam*_*ory 17
Pointy的答案可能是lint抱怨的答案.
但是作为一般规则,使用时应该小心for (... in ...)
.人们常常将此构造与foreach
C#或其他语言中的其他类似概念混淆,而实际上它与之无关.javascript for in
构造迭代对象的每个成员 - 而不仅仅是集合中的值 - 包括方法和属性.如果您事先不知道它是如何工作的,这种行为通常会导致意外的副作用.
例如:
x = ['one', 'two'];
for (var value in x) {
alert(value);
}
Run Code Online (Sandbox Code Playgroud)
这产生了两个警报,第一个0
是第二个1
,第二个是警报,特别是集合的索引.
如果我们改变一点:
x = ['one', 'two'];
x.method = function() {};
for (var value in x) {
alert(value);
}
Run Code Online (Sandbox Code Playgroud)
我们最终有三个警报这个时候,0
,1
,和method
.这是我所指的意外行为.in
如果你知道它做了什么就可以使用它,但我已经看到它不止一次吸引人们.
以下两个示例均适用:
x = ['one', 'two'];
for (var i = 0; i < x.length; i++) {
alert(i);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7418 次 |
最近记录: |