++和 -
已知++(增量)和 - (减量)运算符通过鼓励过多的诡计来导致错误的代码.它们仅次于故障架构,可以实现病毒和其他安全威胁.有一个plusplus选项禁止使用这些运算符.
我知道像PHP这样的PHP结构$foo[$bar++]可能很容易导致一个错误,但是我无法找到一个更好的方法来控制循环而不是一个while( a < 10 ) do { /* foo */ a++; }或for (var i=0; i<10; i++) { /* foo */ }.
jslint是否突出显示它们是因为有些类似的语言缺少" ++"和" --"语法或者处理方式不同,还是有其他理由可以避免我可能会丢失的" ++"和" --"?
什么是对于那么最好的做法是什么?
Jslint解释说它"增加了混乱".我真的不明白......
编辑:代码,按要求:
var all,l,elements,e;
all = inElement.getElementsByTagName('*');
l = all.length;
elements = [];
for (e = 0; e < l; (e++))
{
if (findIn)
{
if (all[e].className.indexOf(className) > 0)
{
elements[elements.length] = all[e];
}
} else {
if (all[e].className === className)
{
elements[elements.length] = all[e];
}
}
}
Run Code Online (Sandbox Code Playgroud) 这篇文章解释了为什么我使用这样的代码时会发出警告:
var htmlCollection = document.getElementsByClassName("class-name"),
i = htmlCollection.length,
htmlElement;
// Because htmlCollection is Live, we use a reverse iteration.
while (htmlElement = htmlCollection[--i]) { // **Warning?! Why?!**
htmlElement.classList.remove("class-name");
}
Run Code Online (Sandbox Code Playgroud)
但这并没有解释为什么在一段时间内分配表达式是一种不好的做法?».
我也读过这个stackoverflow的答案,指出这种做法是好的.所以...
while (element = element.parentNode)类似语法的性能问题还是样式代码推荐?
顺便说一句,似乎«--i»运算符也是一种不好的做法.我在这篇文章中读到:
已知++(递增)和 - (递减)运算符通过鼓励过多的诡计来导致错误的代码.
这是某种玩笑?