3

しばらく前に読んだことがありますが(残念ながらどこか思い出せません)、returnJavaScriptのすべての関数の最後にステートメントを配置するのが賢明でした。これは、その関数で作成されたオブジェクトと変数のメモリをクリアするためです。

それには真実がありますか?

4

2 に答える 2

7

その中に真実はありません。なし。

于 2012-04-12T21:18:08.647 に答える
3

いいえ。

標準ECMA-262ECMAScript言語仕様(12.9)から:

構文

ReturnStatement
return ;
return[ここにLineTerminatorはありません] ;

[...]returnステートメントにより、関数は実行を停止し、呼び出し元に値を返します。省略した場合Expressionの戻り値はundefinedです。それ以外の場合、戻り値はの値です。

ただし、その逆が当てはまります。returnステートメントは、メモリが解放されるのを防ぐことができます。

関数と関数スコープから-MDN#変数の保存

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クロージャは、参照するすべてのスコープの引数と変数を保持する必要があります。各呼び出しは潜在的に異なる引数を提供するため、への呼び出しごとに新しいクロージャが作成されますoutsideinside返されたものにアクセスできなくなった場合にのみ、メモリを解放できます。

于 2012-04-12T21:28:44.110 に答える