07/29/2010
綺麗なバラにゃトゲがある
for (var i = 0, elem; elem = elems[i]; i++) { doSomething(elem) }って書き方見やすくていいな - JavaScriptとかPerlとかPHPとかさくらVPSとか勉強するで紹介されている記事に、ちょっとツッコミます。
元記事の紹介
ノードリストのイテレート - 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として扱われるものを含まない限り、全てのコレクションや配列に対してうまく働きます。
…って、原文にはちゃんと書いてありますね。
トラックバック - http://d.hatena.ne.jp/co-sche/20100729/1280409953
リンク元
- 121 http://cou929.nu/data/google_javascript_style_guide/
- 25 http://d.hatena.ne.jp/lesamoureuses/20100728/1280277572
- 10 http://efcl.info/adiary/JavaScriptPatterns/Chapter2Essentials
- 10 http://reader.livedoor.com/reader/
- 9 http://twitter.com/
- 8 http://ezsch.ezweb.ne.jp/search/?query=綺麗なバラにはトゲがある+意味&start-index=6&adpage=3&ct=1301&sr=0000&t=20100922023633&filter=1
- 8 http://ezsch.ezweb.ne.jp/search/?sr=0101&query=綺麗なバラ
- 8 http://feb19.jp/blog/archives/000159.php
- 4 http://ameblo.jp/linking/entry-10148811590.html
- 4 http://longurl.org