在 JS 中显式指定 return 语句与根本没有 return 语句有什么区别

What is the difference between explicitly specifying a return statement in JS vs not having a return statement at all?

本文关键字:语句 return JS 什么 区别      更新时间:2023-09-26

我正在维护一些旧代码,我注意到在很多情况下,老程序员将return;语句作为他大多数函数的最后一行。这有什么好处吗?我觉得这是浪费空间,所以我一直在删除它们。其中一个通常更快吗?

来自 ECMAScript 语言规范:

调用函数对象 F 的 [[调用]] 内部方法时 使用此值和参数列表,以下步骤是 采取:

  1. funcCtx 是使用 F 的 [[FormalParameters]] 内部的值为函数代码建立新执行上下文的结果 属性,传递的参数 List args并将此值作为 在 10.4.3 中描述。
  2. 让结果是计算 FunctionBody 的结果,该函数体是 F 的 [[Code]] 内部属性的值。如果 F 没有 [[代码]] 内部属性,或者如果其值为空的函数体,则 结果为(正常、未定义、空)。
  3. 退出执行上下文 funcCtx,恢复以前的执行上下文。
  4. 如果 result.type 是抛出的,则抛出 result.value
  5. 如果 result.type 是 return,则返回 result.value
  6. 否则,result.type 必须为正常。返回未定义

换句话说,如果调用的函数没有显式return语句,则隐式返回 undefined

return 语句用于从函数返回值。您不必使用 return 语句;程序将在到达函数末尾时返回。如果函数中未执行 return 语句,或者 return 语句没有表达式,则该函数返回未定义的值。

return; //undefined

return
a+b; 
// is transformed by ASI into
return;
a+b;

所以你又被取消定义了。

在这里查看 MDN 文档

顺便说一下,我找到了这个关于性能的链接,我找到了一个测试,它比较了 4 个表达式、两个带有返回的函数和没有返回的相同函数。

在这里你可以看到测试。希望与您的问题有关