JavaScriptにおいて、
>>> var a = {foo:1, bar:2, baz:3}
undefined>>> for (x in a) {console.log(x)}
foo
bar
baz
↑の挙動にはなんとか慣れたのですが、次の状況だといまだにハマります。
>>> var b = [1, 2, 3]
undefined>>> for (x in b) {console.log(x)}
0
1
2
オブジェクトでも配列でも、そのキー(プロパティ名または配列インデックス)を返す点で一貫性があるのですが、for (変数 in リスト)
がリスト項目の(インデックス番号ではなくて)値を返す例が多いので、どうも勘違いしてしまうのです。