为什么函数体中的冒号不会在JavaScript中抛出错误?

问题描述 投票:3回答:1

我想从箭头函数返回一个对象,但下面的代码是返回undefined。我意识到花括号被解释为开始/结束函数体。引起我兴趣的是a: 1没有抛出错误的原因。

const foo = () => {a: 1};
foo();
// > undefined
javascript arrow-functions
1个回答
5
投票

问题是解析器看到一个名为'a'的label,它属于表达式语句'1'。由于根本没有return语句,因此返回的值始终未定义。

如果你将身体包裹在'()'中,你会看到你的对象被退回,见下文。

const foo = () => ({a: 1});
console.log(foo());

编辑:通过添加括号,您强制解析器将对象文字视为表达式,以便它不被视为块语句。

© www.soinside.com 2019 - 2024. All rights reserved.