綺麗なバラにゃトゲがある

for (var i = 0, elem; elem = elems[i]; i++) { doSomething(elem) }って書き方見やすくていいな - こんにちはこんにちはmonmonです!で紹介されている記事に、ちょっとツッコミます。

元記事の紹介


ノードリストのイテレート - Google JavaScript Style Guide 和訳

var paragraphs = document.getElementsByTagName('p');
for (var i = 0, paragraph; paragraph = paragraphs[i]; i++) {
  doSomething(paragraph);
}

これはすべてのコレクション, 配列に対してうまく動きます. 要素がなくなるまでループし, 最後には false となりループが終了します.

落とし穴

代入文が値を返すことを利用した美しいコードで、getElementsByTagNameで取ってきたノードリストのイテレートには有用ですが、以下のような例では初っ端でコケちゃいます><

var list = [0, 1, 2, 3];
for (var i = 0, item; item = list[i]; i++) {
	doSomeThing(item);
}

なので…


Tips and Tricks - Google JavaScript Style Guide

This works well for all collections and arrays as long as the array does not contain things that are treated as boolean false.

↑の原文は
↓のように訳したほうがよさそうです。
[追記]現在は修正されています。コメント欄にも書いたように、本来は訳者のid:cou929_laさんにフィードバックを送るべきでした。[/追記]

これは、配列が真偽値のfalseとして扱われるものを含まない限り、全てのコレクションや配列に対してうまく働きます。

…って、原文にはちゃんと書いてありますね。