大括号在以下函数定义中意味着什么?

SAC*_*CRD 4 javascript ecmascript-6

大括号在以下函数定义中意味着什么?

(state, { copy }) => state.push(createItem(copy));
Run Code Online (Sandbox Code Playgroud)

Cod*_*gue 6

在ES6中,这称为对象解构.

在那个特定方面,它意味着我可以将一个对象作为函数的参数传递,并将其转换为我可以在该函数中访问的变量,例如:

function f(param1, { param2, param3 }) {
  console.log(param2, param3)
}
f("one", {
  param2: "A",
  param3: "B"
});
Run Code Online (Sandbox Code Playgroud)

Babel REPL示例

优点是代替调用:

f("one", myObject.one, myObject.two);
Run Code Online (Sandbox Code Playgroud)

我可以简单地打电话:

f("one", myObject);
Run Code Online (Sandbox Code Playgroud)

而且one,two参数将被映射到相应的对我.