我想从箭头函数返回一个对象,但下面的代码返回undefined
。我意识到花括号被解释为开始/结束函数体。引起我兴趣的是a: 1
没有抛出错误的原因。
const foo = () => {a: 1};
foo();
// > undefined
答案 0 :(得分:5)
问题在于解析器会看到label,其名称为“' a'属于表达式声明' 1'。由于根本没有return语句,返回的值总是未定义的。
如果你将身体包裹在里面'()'你会看到你的对象被退回,见下文。
const foo = () => ({a: 1});
console.log(foo());
编辑:通过添加括号,您强制解析器将对象文字视为表达式,以便不将其视为块语句。