StaticNodeList
と呼ばれる別の型です。なぜdocument.querySelectorAll
は実際の配列ではなくStaticNodeList
を返すのか、その理由を分析してみましょう。
-
静的な要素リスト:
StaticNodeList
は、要素の静的なリストを表します。つまり、ドキュメントが変更されても返されるリストは更新されません。これは、querySelectorAll
が呼ばれた時点での要素のスナップショットを返すためです。これにより、返された要素の順序が変更されることはありません。 -
パフォーマンス: 静的なリストを返すことで、
querySelectorAll
のパフォーマンスが向上します。実際の配列を返すと、要素の変更や追加があるたびにリストを再計算する必要があります。しかし、StaticNodeList
は一度計算された後はキャッシュされるため、パフォーマンスが向上します。
では、実際にStaticNodeList
を使用する際の注意点と、これを配列に変換する方法を見てみましょう。
-
注意点:
StaticNodeList
は配列ではないため、配列のメソッドやプロパティを直接使用することはできません。例えば、forEach
やmap
といった配列メソッドは使用できません。 -
配列に変換する方法:
StaticNodeList
を実際の配列に変換するには、Array.from
メソッドを使用するか、スプレッド演算子を利用します。以下に例を示します。const nodeList = document.querySelectorAll('.example'); const array1 = Array.from(nodeList); const array2 = [...nodeList];
これにより、
nodeList
が配列array1
やarray2
に変換され、配列メソッドを利用することができるようになります。
以上が、なぜdocument.querySelectorAll
が実際の配列ではなくStaticNodeList
を返すのかの理由と、StaticNodeList
を配列に変換する方法です。これにより、より効果的に要素を操作することができるでしょう。