在 JavaScript 花括号中返回一个对象导致错误

returning an object in JavaScript curly braces causing error

我目前正在学习 codecademy JavaScript 课程,在对象部分我发现了这个错误。本节是关于工厂函数的,工厂函数有两个参数。工厂函数 return 调用时是一个对象。在 return 语句之后,当我按 enter 并在新行上开始大括号时,程序会出错,但是当我将左大括号移回与 return 关键字相同的行时,错误就会消失。我不知道为什么会这样。任何人都可以了解一下这段代码发生了什么。

出现语法错误的代码

const robotFactory = (model, mobi) =>
{
  return 
  {
    model: model,
    mobi: mobi,
    beep()
    {
      console.log('Beep Boop');
    }
  }
};

const one = robotFactory('P-500', true);
console.log(one.model);

有效的代码

const robotFactory = (model, mobi) =>
{
  return {
    model: model,
    mobi: mobi,
    beep()
    {
      console.log('Beep Boop');
    }
  }
};

const one = robotFactory('P-500', true);
console.log(one.model);

JavaScript 隐含 ;s。因此,使用您的以下代码:

const robotFactory = (model, mobi) =>
{
  return 
  {

JavaScript 把上面的代码当作:

const robotFactory = (model, mobi) =>
{
  return;
  {

这是语法错误。所以你永远不应该在自己的行上有任何 return 语句。

更多信息:ECMAScript Automatic Semicolon Insertion, Understanding Automatic Semicolon Insertion in JavaScript, What are the rules for JavaScript's automatic semicolon insertion (ASI)?