在这个问题之前,我假设 ...state, {/* ... */}
等价于 Object.assign({}, state, {/* ... */})
但我发现越来越多的 repo 协议(protocol)在同一个文件中同时使用这两者,因此现在我有点困惑,认为它们有不同的用途。我尝试在网上查找有关此的信息,但无法找到任何关于它们有何不同的明确解释。
示例:https://github.com/choonkending/react-webpack-node/blob/master/app/reducers/topic.js
最佳答案
I assumed that
...state, { /* ... */ }
is equivalent es6 syntax ofObject.assign({}, state, { /* ... */ })
您的第一个语法缺乏上下文。在您链接的代码中,它在数组文字中使用:
[...state, { /* ... */ }]
这是一个 spread element构造多个数组元素。
整个过程确实创建了一个数组,而不是像Object.assign({}, …)
那样的对象。
展开语法不能用在对象字面量中(在 ES6 中, future 有草案会改变这一点)。
关于javascript - ...state, { } 和 Object.assign({ }, state, { }) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322711/