3

JavaScript のガベージ コレクションについていくつか読んだことがありますが、関数のローカル変数は、関数が返された後に収集されます ( GC が機能するために円を壊す必要がある循環参照を除く)。

私が理解しようとしているのは、このコンテキストで「関数が返される」とはどういう意味ですか?

それは意味しますか:

  1. 関数は値を返す必要があります。

    または単に:

  2. 関数呼び出しが終了しました。

常識は(少なくとも私によれば)2)を示唆していますが、その場合、私は間違っています:

  • 値を返さない関数はどうですか?
  • 何も返さない関数に空を追加return;して、ガベージ コレクターに仕事をさせるべきですか?
4

1 に答える 1

9

ステートメントを含まない関数はreturn暗黙的に を返しundefinedます。したがって、関数の「終了」と「戻る」は同じものです。

ガベージ コレクションに関しては、関数が戻った直後にローカル変数が収集されないことに注意してください。その時点でガベージ コレクションの対象になるだけです。ガベージ コレクターは、ブラウザーが実行する必要があると判断した場合、または目に見えるパフォーマンスに大きな影響を与えずに実行できるとブラウザーが判断した場合に実行されます (これは実装に依存します)。

于 2013-09-12T21:10:45.553 に答える