Bru*_*eur 2 javascript while-loop assignment-operator
这篇文章解释了为什么我使用这样的代码时会发出警告:
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»运算符也是一种不好的做法.我在这篇文章中读到:
已知++(递增)和 - (递减)运算符通过鼓励过多的诡计来导致错误的代码.
这是某种玩笑?
不应该有任何性能问题,它(可以说,前缀增量索引可以比后缀增量稍慢,由于与CPU管道的问题,这是一个microoptimization如此可笑的微它几乎肯定意味着什么在JS引擎开销的情况下即使在C语言中,编译器也可能重新排序表达式,如果它可以确保它不会停止等待增量).
无论哪种方式,在条件中反对赋值的主要论据基本上是在你执行它的大部分时间,这是一个错误(你的意思==或在JS中===).一些码检验(和C#要求这是一个语言功能,以避免事故)是满意的,如果你包分配中括号的附加层,说:"是啊,我真正的意思分配"(这也是必要的,当你"重新比较赋值的结果与其他一些值;省略parens而不是比较,然后分配一个布尔值,这更可能是错误的).
有些人讨厌增量/减量运算符用作较大表达式的一部分,因为记住操作的顺序我很难,并且因为已知C程序员编写类似++*++var的类似的东西.我无视这些人; 只是不要用它来做过于棘手的事情.
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |