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

时间:2014-11-20 18:17:45

标签: javascript performance

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

2 个答案:

答案 0 :(得分:2)

来自ECMAScript Language Specification

  

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

     
      
  1. funcCtx 成为使用 F 的[[FormalParameters]]内部值为函数代码建立新执行上下文的结果   property,传递的参数List args this 值为   在10.4.3中描述。
  2.   
  3. 让结果为评估 F 的[[Code]]内部属性 FunctionBody 的结果。如果F没有[[代码]]   内部属性或其值是空的 FunctionBody ,然后   结果是(正常,未定义,空)。
  4.   
  5. 退出执行上下文 funcCtx ,恢复以前的执行上下文。
  6.   
  7. 如果结果 .type为throw,则抛出结果 .value。
  8.   
  9. 如果结果 .type返回,则返回结果 .value。
  10.   
  11. 否则结果 .type必须正常。返回未定义
  12.   

换句话说,如果被调用的函数没有明确的return语句,那么它会隐式返回undefined

答案 1 :(得分:0)

return语句用于从函数返回值。您不必使用return语句;程序将在函数结束时返回。如果函数中没有执行return语句,或者return语句没有表达式,则函数返回值 undefined

return; //undefined


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

所以你再次未定义。

查看MDN文档here

顺便说一句,我发现了这个关于性能的链接,我发现了一个测试,它将4个表达式,两个函数与一个返回函数和相同的函数进行比较而不返回。

Here你可以看到测试。希望它与你的问题有关