先日の記事の関連記事です。
このコードを実行したらどんな出力になるでしょうか。
const values = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; for (const value of values) { console.log(value); // 先頭要素を1つ削除する values.shift(); }
- 先頭要素を削除しようが、valueは配列の要素を1つずつ移動する。ただしループ回数は徐々に減っていくので最終的には元の要素数の半分になる。つまり1, 2, 3, 4, 5を出力
- valueは配列の内容とインデックスによって決定される。インデックスはループごとに1つずつ増えるので、ループ内で先頭要素を削除した場合はvalueが1つ飛ばしで取得される。つまり1, 3, 5, 7, 9を出力
どちらももっともな意見に見えますが、あなたの答えはどちら(orそれ以外の答え)でしょうか。
ちなみに、先日の記事の内容を読んでECMA-262のArray Iteratorの仕様まで目を通した方なら答えられるはずです。
わからない方も、わかったけど答え合わせをしたい方も、こちらからご確認ください。
0 件のコメント:
コメントを投稿