首页 > 解决方案 > 为什么新行上的 return 语句不返回任何值?

问题描述

考虑以下情况:

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

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

console.log(func1());
console.log(func2());

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

标签: javascript

解决方案


“规则”是自动分号插入

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

在它之后的行上开始的对象被简单地忽略。


推荐阅读