不久前我在某处读到(不幸的是不记得在哪里),总是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
不再可访问时,才能释放内存。