我在一段时间后读过(遗憾的是不记得在哪里),总是在JavaScript中的每个函数的末尾加上return
语句是明智的,因为它清除了对象和变量的内存在该功能中创建。
这有什么道理吗?
答案 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
不再可访问时,才能释放内存。