JavaScript入門 練習問題 21:構文:反復処理におけるfor...ofとfor...inの違い
JavaScriptのfor...ofとfor...inというループ構文に関する説明として、正しいものはどれですか?
- for...ofはイテラブルの値を取得し、for...inはインデックスやプロパティ名を取得する
- for...ofはインデックスやプロパティ名を取得し、for...inは値を取得する
- for...ofとfor...inはどちらも配列の値のみを取得する動作をする
- for...ofはオブジェクトのプロパティ名のみを取得し、for...inは値のみを取得する
- for...ofとfor...inは共に配列専用でオブジェクトには使用できない
Qraftユーザーの成績:難易度 Eランク(レーティング1086)・正答率 67%(14/21回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)
正解と解説を見る
正解:for...ofはイテラブルの値を取得し、for...inはインデックスやプロパティ名を取得する
for...ofは配列や文字列などのイテラブル(=反復可能なオブジェクト)に対して各要素の「値」を順に取り出すのに対し、for...inはオブジェクトの「プロパティ名」や配列の「インデックス」を順に取り出します。
【正解の理由】for...ofは値そのものを取得する仕組みであり配列やMap、Setなどのイテラブルに使えます。for...inは列挙可能なプロパティ名(キー)を取得する仕組みで、配列にも使えますがその場合はインデックスが文字列として返されます。
【不正解の理由】
• 「for...ofはインデックスやプロパティ名を取得し、for...inは値を取得する」:両者の役割が実際とは逆になっている
• 「for...ofとfor...inはどちらも配列の値のみを取得する動作をする」:for...inは値ではなくキーやインデックスを取得するため誤り
• 「for...ofはオブジェクトのプロパティ名のみを取得し、for...inは値のみを取得する」:for...ofは値を、for...inはキーを取得するため説明が逆転している
• 「for...ofとfor...inは共に配列専用でオブジェクトには使用できない」:for...inは通常のオブジェクトのプロパティ列挙にも使用できるため誤り