2017-06-27 6 views
2

...演算子は、語彙の位置(パラメータの位置と構造の割り当て、配列、引数の位置など)によって、2つの異なるセマンティクスを持つ "spread"演算子ですか?...演算子の名前は何ですか?

「普及」と「休憩」の2つの名前がありますか?

+1

これは、コード内の現在位置に応じて 'spread'と' rest'両方です。 – wostex

+0

同じ外観を持つ2つの演算子または2つの名前を持つ1つの演算子が実際にはありますか? – Ben

+3

Felixからの素晴らしい説明については、https://stackoverflow.com/q/37151966/710446を参照してください。「残りの演算子はありません」 - 演算子は演算子ではないオペランドをとり、結果を他の演算子に渡すことができます。 '...'はこの定義に合致しません – apsillers

答えて

3

これは、使用法に基づいて異なる名前の同じ演算子です。

残りのプロパティ

残りのプロパティは、すでに非構造パターンによって取り出されていない残りの独自の列挙プロパティキーを収集します。これらのキーとその値は新しいオブジェクトにコピーされます。オブジェクト初期化子のコピーで

let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 }; 
x; // 1 
y; // 2 
z; // { a: 3, b: 4 } 

拡がり性

拡がり性は、新しく作成されたオブジェクトの上に提供されたオブジェクトからの列挙のプロパティを所有しています。

let n = { x, y, ...z }; 
n; // { x: 1, y: 2, a: 3, b: 4 } 

more ...

+0

もちろん、 "残りのパラメータ"(?)、 "引数の広がり"、 "反復子の広がり"(?)私は命名が不明です!私は何かを見逃しましたか? – Ben

関連する問題