Hatena::ブログ(Diary)

外付Web海馬

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として扱われるものを含まない限り、全てのコレクションや配列に対してうまく働きます。

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

cou929_lacou929_la 2010/08/06 08:13 はじめまして. Google JavaScript Style Guide を和訳したものです.
確かにここの訳はまずいですね... 早速修正したいと思います.
ご迷惑をおかけして申し訳ございません. ありがとうございました.

co-scheco-sche 2010/08/06 19:49 はじめまして><
こちらこそ、有益な記事の和訳を公開して下さったことに感謝いたします。
フィードバック先もサイトに記載されていますので、本来そちらに送るべきでした。申し訳ございません。

さらに良い記事になるよう、応援しております!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証