不久前我在某处读到(不幸的是不记得在哪里),总是return在 JavaScript 中的每个函数的末尾放置一个语句是明智的,因为它清除了在该函数中创建的对象和变量的内存。
这有什么道理吗?
不久前我在某处读到(不幸的是不记得在哪里),总是return在 JavaScript 中的每个函数的末尾放置一个语句是明智的,因为它清除了在该函数中创建的对象和变量的内存。
这有什么道理吗?
这没有道理。没有任何。
不。
来自标准 ECMA-262 ECMAScript 语言规范(12.9):
句法
ReturnStatement :
return ;
return[此处没有LineTerminator ]表达式;[...]
return语句会导致函数停止执行并向调用者返回一个值。如果Expression省略,则返回值为undefined。否则,返回值为Expression的值。
然而,情况恰恰相反:return语句可以防止内存被释放。
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不再可访问时,才能释放内存。