次のコードは、配列内包表記と反復子/生成子を使用した Firefox 固有の JavaScript 1.7 実装を参照しています。この投稿の執筆時点では、'Iterator'、'yield'、および配列内包表記は Webkit ブラウザー (Chrome、Safari) ではまだサポートされておらず、Firefox の JavaScript エンジン (Google、liberateme) でのみ動作するようです。
注意: ECMAScript Harmony は、構文に新しい変更をもたらす可能性があり、この投稿を廃止する可能性があります
var myobject = {'foo':5,'bar':10};
var myarray = [10,20,30];
for (var i in it) {
console.log(i);
}
コード:
JavaScript:
//if var it = Iterator(myobject);
['foo',5]
['bar',10]
//if var it = Iterator(myarray);
[0,10]
[1,20]
[2,30]
JS 1.7 イテレータは常に「キー」と「値」を返すようです (キーが実際のオブジェクト キーであるか、配列のインデックスであるかに関係なく)。これを Python と比較してください。配列です。
パイソン:
#if it = iter(myobject);
[foo,5]
[bar,10]
#if it = iter(myarray);
10,
20,
30
問題は、Python から JavaScript 関数に移植しようとしているときに、なぜ Iterator() と iter() が同じことをしないのかということです。