2016-05-19 28 views
1

この質問に先立って、...state, { /* ... */ }は同等のes6構文Object.assign({}, state, { /* ... */ })ですが、これらの両方を使用してますます同じファイル内にあるので、やや混乱していて、異なる目的を果たしていると思います。私はこのオンラインに関する情報を調べようとしましたが、これらがどのように異なるかについて明確な説明を見つけることができませんでした。...状態、{}とObject.assign({}、状態、{})の相違点

例:https://github.com/choonkending/react-webpack-node/blob/master/app/reducers/topic.js

+0

最初のものは有効な式ではありませんか? – Bergi

+0

これらを使用するサンプルソースコードへのリンクを投稿できますか? – Bergi

+0

これは等しい、ちょうどショートカット、これらのreposではリファクタリングがありません。どちらもマッピングで新しいオブジェクトを作成します – Janom

答えて

2

私は...state, { /* ... */ }はあなたの最初の構文は文脈を欠いているObject.assign({}, state, { /* ... */ })

の同等ES6構文であると仮定しました。それは、複数の配列要素を構築spread elementある

[...state, { /* ... */ }] 

:あなたがリンクされたコードでは、配列リテラルの内部で使用されています。

の配列を作成するのは、Object.assign({}, …)のようなオブジェクトではありません。

オブジェクトリテラルでは、スプレッドシンタックスを使用できません(ES6では、これを将来変更するためのドラフトがあります)。

+0

に追加しました。{... state、/ * ... * /}のようなものは同等ではないでしょうか? – Ilja

+0

@Ilja:ES8では、おそらく。 ES6では、構文エラーです。 – Bergi

+0

私は、確認していただきありがとうございます:) – Ilja

関連する問題