2012-04-12 16 views
3

私はいつかreturnステートメントをJavaScript内のすべての関数の最後に置くことが賢明であることを覚えています。残念ながら、その関数で作成されたオブジェクトと変数のメモリがクリアされるためです。常に関数を返すのは賢明ですか?

それは本当ですか?

+13

関数は、 'return'文を使用するかどうかにかかわらず、常に返します。 'return'ステートメントを追加すると、メモリや変数をクリアすることはありません。 –

答えて

7

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

+0

お返事ありがとうございます。私はその主張に真実はないと思ったが、私は今日それについて考えていて、オンラインで何かを見つけることができなかった。再度、感謝します。 – user1265617

3

Standard ECMA-262 ECMAScript Language Specification(12.9)より:

構文

ReturnStatement
return ;
return [ここでないLineTerminator] ;

は、[...] return文は実行を停止し、 呼び出し元に値を返す関数の原因となります。 Expressionが省略された場合、戻り値はundefinedです。それ以外の場合、戻り値はの式の値になります。

逆のことが当てはまりますが、returnステートメントによってメモリが解放されるのを防ぐことができます。 Functions and function scope - MDN # Preservation of variablesから

insideが返されたときxが保存される方法

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 

注意してください。クロージャは、参照するすべてのスコープで引数と変数を保持する必要があります。各呼び出しは異なる引数を提供するので、outsideへの呼び出しごとに新しいクロージャが作成されます。返されたinsideにアクセスできない場合にのみ、メモリを解放することができます。

関連する問題