由于某些未知的原因,我无法让对象散布在代码中。我不得不依靠'Object.assign()',但宁愿使用'...'

以下作品:

const frederick = {
  name: 'Frederick Douglass',
  canRead: false,
  canWrite: false
};

// create new object and mutate that one
const selfEducate = person =>
  Object.assign({}, person,
    {canRead:true},
    {canWrite:true}
  );

console.log(selfEducate(frederick));  // { name: 'Frederick Douglass', canRead: true, canWrite: true }
console.log(frederick);  // { name: 'Frederick Douglass', canRead: false, canWrite: false }


但是,以下内容不是:

const frederick = {
  name: 'Frederick Douglass',
  canRead: false,
  canWrite: false
};

const selfEducate = person =>
  ({
    ...person,
    canRead: true,
    canWrite: true
  });

console.log(selfEducate(frederick));
console.log(frederick);


那是错误的:

SyntaxError: Unexpected token ...


散布运算符确实可以在涉及复制数组的其他代码中工作,但在此示例中不行。对于任何反馈,我们都表示感谢。

最佳答案

如果您的其他代码部分正在与数组的散布运算符一起使用,则与尝试散布对象文字不同。

对于该规范,有一些建议,例如here

关于javascript - JavaScript ES6中的纯函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43928285/

10-10 11:55