JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
※前スレ
JavaScript の質問用スレッド vol.122
http://echo.2ch.net/test/read.cgi/tech/1472426483/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
JavaScript の質問用スレッド vol.123 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 73c8-oPzN)
2017/04/03(月) 00:31:25.68ID:82yaJsi70980デフォルトの名無しさん (フリッテル MM5e-Xm5V)
2017/07/16(日) 10:43:52.50ID:OnshtUopM >>979
> enumerableは「要素が列挙される」ことが可能かどうか
「列挙されることが可能」と「列挙可能」は同義ではないのか?
MDNでは列挙可能/列挙不可能と説明されているようだが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
ちなみに、必ずしも列挙不可能なわけではない。
Object.getOwnPropertyNames() によって {enumerable: false} なプロパティも列挙できる。
{enumerable: false} は一部の機能(for-in, Object.keys)で列挙を禁止するフラグに過ぎない。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
> ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
> HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
1文目と2文目は等価ではない。
1文目は俺が主張している内容と同義で「for-ofで列挙できるか」
MDN では「iterableになるために、オブジェクトは@@iteratorメソッドを実装する必要があります」と説明されている。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterable
2文目は「for-ofに限らず要素を列挙する手段があるかどうか」
2文目になるとほとんどのオブジェクトが列挙可能となる。
Object.values, Object.keys 等があるから、{a:1,b:2}でさえ、「列挙可能」だ。
列挙不可能なのは WeakMap ぐらいか。
> enumerableは「要素が列挙される」ことが可能かどうか
「列挙されることが可能」と「列挙可能」は同義ではないのか?
MDNでは列挙可能/列挙不可能と説明されているようだが。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for...in
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
ちなみに、必ずしも列挙不可能なわけではない。
Object.getOwnPropertyNames() によって {enumerable: false} なプロパティも列挙できる。
{enumerable: false} は一部の機能(for-in, Object.keys)で列挙を禁止するフラグに過ぎない。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyNames
> ここで言ってるのは「要素を列挙する」ことが可能かどうか、つまり@@iteratorを持つのと同分類
> HTMLCollectionはlengthとitem()を備えるので要素を列挙していくことが可能
1文目と2文目は等価ではない。
1文目は俺が主張している内容と同義で「for-ofで列挙できるか」
MDN では「iterableになるために、オブジェクトは@@iteratorメソッドを実装する必要があります」と説明されている。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Iteration_protocols#iterable
2文目は「for-ofに限らず要素を列挙する手段があるかどうか」
2文目になるとほとんどのオブジェクトが列挙可能となる。
Object.values, Object.keys 等があるから、{a:1,b:2}でさえ、「列挙可能」だ。
列挙不可能なのは WeakMap ぐらいか。
981デフォルトの名無しさん (アウアウウー Sa08-Xm5V)
2017/07/16(日) 11:06:23.15ID:QZhQxoRLa 汎用的な言語定義を説くなら、英和辞典を引くべき。
https://www.google.co.jp/search?num=30&q=%E8%8B%B1%E5%92%8C+iterable
日本語訳するなら、反復可能(iterable)と列挙可能(enumerable)が一般的。
https://www.google.co.jp/search?q=%E5%8F%8D%E5%BE%A9%E5%8F%AF%E8%83%BD+iterable
https://www.google.co.jp/search?q=%E5%88%97%E6%8C%99%E5%8F%AF%E8%83%BD+enumerable
「列挙されることが可能(emurable)」と「列挙可能(iterable)」では違いが分からない。
そもそも、日本語では「受動態」と「能動態」の差異しかないのに、英語では単語が変わっている。あり得ない。
https://www.google.co.jp/search?num=30&q=%E5%88%97%E6%8C%99%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD+emurable
本題に戻るが、JavaScriptでiterableが持ち込まれたのはES6からだから、MDNの解釈が正しいと思う。
https://www.google.co.jp/search?num=30&q=%E8%8B%B1%E5%92%8C+iterable
日本語訳するなら、反復可能(iterable)と列挙可能(enumerable)が一般的。
https://www.google.co.jp/search?q=%E5%8F%8D%E5%BE%A9%E5%8F%AF%E8%83%BD+iterable
https://www.google.co.jp/search?q=%E5%88%97%E6%8C%99%E5%8F%AF%E8%83%BD+enumerable
「列挙されることが可能(emurable)」と「列挙可能(iterable)」では違いが分からない。
そもそも、日本語では「受動態」と「能動態」の差異しかないのに、英語では単語が変わっている。あり得ない。
https://www.google.co.jp/search?num=30&q=%E5%88%97%E6%8C%99%E3%81%95%E3%82%8C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E5%8F%AF%E8%83%BD+emurable
本題に戻るが、JavaScriptでiterableが持ち込まれたのはES6からだから、MDNの解釈が正しいと思う。
982デフォルトの名無しさん (アウアウウー Sa08-Xm5V)
2017/07/16(日) 11:27:22.43ID:QZhQxoRLa >>957
> DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
どういう意味だろう?
NodeIterator は createNodeIterator() で生成するオブジェクトの Interface だが、指定可能なノードはルートノードだけ。
iterable な NodeList に出来て、iterable ではない HTMLCollection に出来ない事があるとは思えない。
そもそも、NodeList を対象に取る機能ではないような。
https://dom.spec.whatwg.org/#interface-nodelist
https://dom.spec.whatwg.org/#interface-htmlcollection
> DOMで言うイテラブルは通常NodeIteratorなどのことなのでそれとも違う
どういう意味だろう?
NodeIterator は createNodeIterator() で生成するオブジェクトの Interface だが、指定可能なノードはルートノードだけ。
iterable な NodeList に出来て、iterable ではない HTMLCollection に出来ない事があるとは思えない。
そもそも、NodeList を対象に取る機能ではないような。
https://dom.spec.whatwg.org/#interface-nodelist
https://dom.spec.whatwg.org/#interface-htmlcollection
レス数が950を超えています。1000を超えると書き込みができなくなります。
