質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

943閲覧

JavaScriptにおけるコレクションの定義が分かりません。

taka_oct092018

総合スコア136

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/21 06:26

検索してみるとオブジェクトを集めた配列のようなものとありました。
漠然としてよく分かりません。
具体的には
NodeListはdocument.querySelectorAll()の戻り値の、配列風オブジェクト。
HTMLCollectionはフォームを全て格納したもの。
node.childNodesは自動的に更新されるNodeList。

よろしくお願い致します。

引用元
https://ginpen.com/2015/12/22/nodelist-vs-htmlcollection/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/05/21 06:37

それぞれ簡易にコード作って試したら明白なのでは。
guest

回答2

0

ベストアンサー

公式、ではありませんが、ほぼ公式では次のように記載があります。

HTMLCollection
HTMLCollection - Web API | MDN

NodeList
NodeList - Web API | MDN

両者は似ているようですが、別物で、
プロパティやメソッドの違いはもちろんありますが、
最大の違いは、
**ライブ(HTML Collection)静的(NodeList)**かの違いでしょう。
HTMLCollectionは、ライブのため、
DOMをコントロールした際、その状態が変数上でも反映されます。

NodeListは、DOMをコントロールした際、
HTMLには反映されますが、変数上では反映されません。

これは、おそらくですが、
ライブとは、DOMそのものを参照している状態であるため、DOMの変化も反映される、
静的とは、取得時点でのDOMのみ取得(コピーに近い状態)し、HTML上のその後の変化は追わない状態のものである、
と言えるかと。

ただし、MDNの記載にある通り、
NodeListにおいても、childNodesなどの、プロパティはライブである、など、
一概にNodeListが完全に静的とは言えないので、なんとも言えません。

このライブか静的かの違いを理解するには、
JavaScriptの参照に関する仕様の熟知が必要になりますので、
今段では、そういった挙動の違いがあるんだ、と覚えておくとよいかと。

投稿2021/05/21 07:57

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka_oct092018

2021/05/31 07:51

詳しい解説、ありがとうございます。
guest

0

JavaScriptにおけるコレクションの定義が分かりません。

いちばん確実なのは規格書だろう、ということで、ECMA-262 11.0版(ES2020)について、「Collection」という単語で検索をかけてみました。

ヒットしたものは、

  • a collection ofのような、普通名詞としての用法
  • 配列とTypedArrayをまとめた「Indexed Collections」という見出し
  • MapSetなどをまとめた「Keyed Collection」という見出し

だけで、術語として定められたものではありませんでした。

投稿2021/05/21 06:39

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/05/21 06:41

JavaScript的な特別な意味を込めない、単なる「値を集めたもの」という程度の意味だったのではないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問