对象中的匿名箭头函数

Anonymous arrow functions in objects

这个语法是如何工作的:

let foo = 0; // or 1
let bar = {
   foo: foo || function (x) { return 'foo ' + x; }
};

// If foo is 0
bar.foo('bar'); // Returns 'foo bar'
// If foo is 1
bar.foo; // Returns 1

而这个没有:

let foo = 0; // or 1
let bar = {
   foo: foo || (x) => { return 'foo ' + x; }
};

如果我尝试 运行 下面的示例,我会在控制台中收到 Malformed arrow function parameter list 错误。它如何 Malformed,正确的语法是什么才能获得与顶部示例相同的功能?

问题是箭头函数不知道如何对参数进行分组。您应该将函数包装在括号中:

let foo = 1
let bar = {
   foo: foo || (x => { return 'foo ' + x; })
};

有段时间没用js了,不过觉得

let bar = {
   foo: foo || (x => { 'foo' + x })
};

应该做这份工作

问候