Reading through the jQuery source I stumbled upon the following piece of code (available here):
for (; i < length;) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
Why is a for loop used here instead of a while loop?
I vote for someone having an affinity for bad coding style. That’s the only explanation I can see for both the
forloop and thei++being placed inside of an array subscript. I think this would be better:Or if you happen to feel that the
===operator in the original example has value, then:Another possible reason for doing this may have been as a performance optimization. Although this quick benchmark that I put together seems to disprove that theory. On Windows the
whileloop above is 20% faster than the originalforloop in Chrome, in IE and Firefox both loops perform the same. On OS X theforloop has a 10% advantage in Firefox, there is no difference between the two in Chrome, and Safari prefers thewhileloop by 6%.So from a performance standpoint it’s a wash. If anything then judging by market share you would probably want to optimize for Chrome on Windows before optimizing for Firefox on Mac, in which case the
whileloop would be preferred.Which says to me that it’s unlikely that performance optimization played a factor with this code. And I return to my original theory that it’s just an example of poor coding style making it past the code-review process.