JavaScript ES6 中的纯函数
Pure Functions In JavaScript ES6
由于某些未知原因,我无法让对象传播在我的代码中工作。我不得不求助于 '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。
请尝试以下步骤。
安装
npm install --save-dev babel-plugin-transform-object-rest-spread
在现有预设中的使用
"plugins": ["transform-object-rest-spread"]
参考link:Click here
注意:对象传播运算符不是默认功能。它需要如上所述的转译器。
由于某些未知原因,我无法让对象传播在我的代码中工作。我不得不求助于 '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。
请尝试以下步骤。
安装
npm install --save-dev babel-plugin-transform-object-rest-spread
在现有预设中的使用
"plugins": ["transform-object-rest-spread"]
参考link:Click here
注意:对象传播运算符不是默认功能。它需要如上所述的转译器。