为什么第二个函数返回未定义?

时间:2018-10-25 18:05:37

标签: javascript

我有2个JavaScript函数返回相同的对象,一个接一个地调用两个函数,为什么第二个函数返回undefined

function foo1()
{
  return {
      bar: "hello"
  };
}

function foo2()
{
  return
  {
      bar: "hello"
  };
}

console.log(foo1());
console.log(foo2());

// foo1 returns:
// Object {bar: "hello"}
// foo2 returns:
// undefined

1 个答案:

答案 0 :(得分:3)

因为自动分号插入会在return之后插入分号。

第二个功能变为:

function foo2() {
  return; // since no value is mentioned, undefined is returned
  {  // This is the start of a block, not an object
    bar: 'hello'; // bar is a line label, not a key in an object.
  }
}

如果要让return语句分布在多行中,请在同一行上启动对象(如foo1中一样),或将其包装在括号中

function foo2() {
  return (
    {
      bar: 'hello'
    }
  );
}