0

私は以下のJSを持っています:

var z = function(){
return "string";
}

var x = function(){
      var y = new z();
      var div = document.createElement('div');
      div.innerHTML = y;
      document.body.appendChild(div);
      /*
            my code…hundreds of other functions. Entire app is js all data comes through sockets and elements created using JS
     */
}

ばかげているように聞こえるかもしれない質問がいくつかありますが、そうでないことを願っています。

したがって、「x」の中には「y」と「div」が入ります。これらの 2 つの要素がそこでのみ使用されている場合、それらはブラウザの JS 内で「生きている」のでしょうか、それとも消えますか?
基本的に、不要なアイテムで余分なメモリが使用されないように、それらを null に設定する必要がありますか。

また、JS を使用して 25k 行ほど書き、すべての要素は JS を使用して作成されています。アプリは、閉じるまで 9 時間ほど起動したままになり、別の日に最初からやり直します。
しかし、それらの時間は、そのサイズのために遅くなるのではないかと心配しています. これは本当でしょうか?

4

1 に答える 1

0

アプリケーションのメモリ使用量に関しては、 が呼び出されるたびx()に、ローカル変数の一時インスタンスが作成されますy。関数が完了するまで実行されると、これは破棄されます。 X新しいスコープを与える無名関数です。新しい変数はこのスコープ内にありthis、関数オブジェクトにもなり、 でグローバル スコープにアクセスできますwindow

さまざまなブラウザがこの種の状況を処理する方法に違いがありますが、結果はほとんど同じです.
ブラウザは常に最適化されており、メモリの処理をより効率的かつ高速に行うことができます。スコープ チェーンのルックアップ コストも最適化されているため、パフォーマンスが向上します。

匿名関数の性質上x()、ブラウザが「ガベージ コレクション」を実行する瞬間があり、スクリプトの実行が遅くなったり停止したりすることがありますが、その後は問題なく実行されるはずです。
多くのライブラリ (jquery など) が大量の処理を必要とするため、最新のブラウザー内の Javascript エンジンは驚異的な処理を処理できます。

Javascript エンジンと 25k 行についてはあまり心配しません。それは、コード自体とそれが何をしているかによります。

于 2013-02-06T11:12:06.620 に答える