总是回归功能是明智的吗?

时间:2012-04-12 21:11:57

标签: javascript

我在一段时间后读过(遗憾的是不记得在哪里),总是在JavaScript中的每个函数的末尾加上return语句是明智的,因为它清除了对象和变量的内存在该功能中创建。

这有什么道理吗?

2 个答案:

答案 0 :(得分:7)

没有真相。无。

答案 1 :(得分:3)

没有

来自Standard ECMA-262 ECMAScript Language Specification (12.9):

  

<强>语法

     

ReturnStatement
  return ;
  return [没有 LineTerminator 此处] 表达式 ;

     

[...] return语句导致函数停止执行并将值返回给   呼叫者。如果省略Expression,则返回值为undefined。否则,返回值是 Expression 的值。

但事实恰恰相反:return语句可以防止释放内存。

来自Functions and function scope - MDN # Preservation of variables

function outside(x) {
   function inside(y) {
      return x + y;
   }
   return inside;
}
fn_inside = outside(3); 
result = fn_inside(5); // returns 8

result1 = outside(3)(5); // returns 8
  

注意返回x时保留inside的方式。闭包必须保留它引用的所有作用域中的参数和变量。由于每个调用都提供了可能不同的参数,因此为每次调用outside创建一个新的闭包。只有当返回的inside不再可访问时,才能释放内存。