为什么新行上的return语句不返回任何值?

Web*_*urk 5 javascript

考虑以下情况:

function func1() {
  return {
      hello: "world"
  };
}

function func2() {
  return
  {
      hello: "world"
  };
}

console.log(func1());
console.log(func2());
Run Code Online (Sandbox Code Playgroud)

第一个函数func1()将返回对象,{ hello: "world" }但第二个函数func2()将返回undefined.这是为什么?我的猜测是返回值需要与return关键字在同一行.我在这里没有意识到什么"规则"?

JLR*_*she 10

"规则"是自动分号插入.

return它本身就是一个有效的语句,因此它被视为完整的语句.从下一行开始的代码在语法上也是有效的(尽管在这种情况下它根本不被解释为对象,而是包含标签的代码块和由字符串文字组成的单个"语句").因此,自动分号插入在这里开始,两者被视为单独的语句.

简单地忽略在该行之后开始的对象.