You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中return关键字后换行为何返回undefined?

为什么return后换行,函数会返回undefined?

这其实是JavaScript里的**自动分号插入(ASI,Automatic Semicolon Insertion)**机制在偷偷搞事情!

你猜的没错,return语句确实被提前终止了——JS引擎会在某些特定场景下自动给代码补充分号,其中就包括return单独占一行的情况。

咱们看你写的第二个报错代码:

(function() {
  function sayHello() {
    var name = "myName";
    return
    { fullName: name }
  }
  console.log(sayHello().fullName);
})();

JavaScript引擎处理这段代码时,会自动在return后面插入一个分号,把它拆成了两个独立的语句:

return;  // 这里直接返回undefined,函数执行结束
{ fullName: name }  // 这只是个无意义的代码块,完全不会被return出去

所以sayHello()最终返回的是undefined,你再去访问undefined.fullName,自然就会抛出错误了。

而第一个正常运行的代码里,return后面紧跟对象字面量的左大括号{,JS引擎会认为这是同一条语句的延续,不会插入分号,所以能正确返回对象。

如果就是想把return和对象字面量分开写,也有办法——给对象字面量套个括号,这样ASI就不会乱插分号了:

(function() {
  function sayHello() {
    var name = "myName";
    return (
      { fullName: name }
    )
  }
  console.log(sayHello().fullName);
})();

内容的提问来源于stack exchange,提问作者brk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:38