問題タブ [ecmascript-6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - ジェネレーター関数での委任された yield (yield star、yield *)
ECMAScript 6 は、ジェネレーター関数とイテレーターをもたらすはずです。ジェネレーター関数 (function*
構文を持つ) は反復子を返します。イテレーターには、next
繰り返し呼び出されるとジェネレーター関数の本体を実行し、すべてのyield
オペレーターで実行の一時停止と再開を繰り返すメソッドがあります。
ジェネレーターに関するECMAScript 6 wiki では、次のように「委譲された yield」yield*
演算子も紹介されています。
オペレーターは
yield*
別のジェネレーターに委任します。これは、ジェネレーターを構成するための便利なメカニズムを提供します。
「別のジェネレーターに委任する」とはどういう意味ですか? yield*
「ジェネレーターを便利に構成する」にはどうすればよいですか?
[ノード v0.11.3 のジェネレーターで--harmony-generators
フラグを使用して遊ぶことができます。]
javascript - for ループの代わりに while ループで繰り返す
ECMAScript 6 では、反復のためのジェネレーター、イテレーター、およびシンタックス シュガーが導入されています。フラグ付きの Node.JS v0.11.4
--harmony --use_strict --harmony_generators
次のジェネレータを理解しています
次に、1000 未満のフィボナッチ数を出力できます。
この例では、while
ループではなくfor
ループの方がより自然で、次のようになります。
イテレータの反復は、while
ループではなくループで実行できfor
ますか?
javascript - 配列を使用してセットを構築する方法
私はSet
Node.JS v0.11.3と--harmony
フラグで遊んでいます。API は正常に動作します。 add
、remove
、clear
などを実行できます。しかし、配列を使用してセットを初期化することはできませんでした。私は試しました(MDNページのプロンプトに従って)
配列をセットに変換するにはどうすればよいですか? MDN は時代遅れですか? Node.JS は機能を実装していないだけですか?
javascript - プロパティのキー/値を回復する
Node.JS v0.11.4 の ECMAScript 6 シンボルとマップを--harmony
フラグで遊んでいます。以下を検討してください。
'Noise'
一意であることが保証されている「匿名」シンボル キーによってプロパティが識別される場合、値を取得できますか?
javascript - オブジェクトがガベージ コレクションの準備ができていることをどのように示すことができますか?
ECMAScript 6 では弱いマップが導入されています。これは Node.JS v0.11.3 でフラグ付きで実装されています--harmony
。
次のコードを考えてみましょう。
最後の行が実行されると、文字列'Save me!'
はガベージ コレクションの準備が整います。文字列に、現在のスコープから文字列につながる強い参照のチェーンがなくなったことをコードで実証できますか?
size
弱いマップには反復やマップに似たプロパティがないことを知っています。特定のオブジェクトが弱いマップからアクセスできなくなったことを事後的に知る方法がないということですか?
javascript - スコーピングのみに使用されるブロックはどのように呼び出されますか?
while
JavaScript には、ブロック、if
ブロック、ブロックなど、多くの種類のブロックがありfor
ます。ES6 ではブロック スコープが導入されているため、「純粋にセマンティック」で「匿名」のブロックは理にかなっています。
上記のタイプのブロック (スコーピングのみに使用) は何と呼ばれますか?
javascript - 言語の変更に備えるには?
私は JavaScript の内外を学ぶのに苦労していますが、最近、ECMAScript 6 が導入されつつあることがわかりました。間もなく変更され、廃止されることを学ぶことは、ますます些細なことのように思えます。新しいバージョンが出たときに、ECMAScript5 の複雑な詳細に飛び込む価値があるかどうかはわかりません。ECMAScript 6 のプログラマーとしてどのように準備すればよいですか? また、より一般的には、進化する言語にどのように準備すればよいですか?
javascript - JavaScript シンボル タイプ: (非文字列オブジェクト キー)
この ECMAScript 6 ドラフト仕様で言及されている "Symbol" JavaScript タイプとは何ですか?
仕様を引用するには:
Symbol 型は、Object プロパティのキーとして使用できるすべての非 String 値のセットです。
可能な Symbol 値はそれぞれ一意であり、不変です。
シンボル値には、[[Private]] と呼ばれる単一の監視可能な属性があり、その不変値は true または false です。プライベート シンボルは、[[Private]] 属性の値が true の Symbol 値です。
オブジェクトのキーは文字列だけだと思っていましたが、私だけではありません。この受け入れられたSOの回答を引用するには:
…オブジェクト キーは常に文字列です…</p>
シンボル タイプとは何かを説明し、その使用法を示していただけますか。私は仕様を理解しようとしています。
ありがとう!