4

私は、宣言する変数が少ないほど、私はより良い状態にあるとほとんど考えてきました。Julien Lecomte のプレゼンテーション ノートを調べたところ、ルックアップのオーバーヘッドを減らすためにローカル変数を宣言していることがわかりました。

var arr = ...;
var globalVar = 0;
(function () {
    var i;
    for (i = 0; i < arr.length; i++) {
        localVar++;
    }
})();

/* vs */

var arr = ...;
var globalVar = 0;
(function () {
    var i, l , localVar;
    l = arr.length;
    localVar = globalVar;
    for (i = 0; i < l; i++) {
        localVar++;
    }
    globalVar = localVar;
})();

/* (faster on all A-grade browsers) */

編集:最新のすべてのデスクトップおよびモバイルブラウザーで実行する JavaScript ベースの webapp/-site を設計する場合、ルックアップのコストのためにローカルスコープで変数ルックアップを常にキャッシュすることを好む場合がありますか? (たとえば、割り当てられたオブジェクトに複数回アクセスしmyArray[100][20][40][90]たり、現在のスコープの多くのレベルにあるオブジェクトのいくつかのプロパティを変更したりすると、何千ものループが発生しますか?)

それとも、ローカル キャッシュ変数を省略して文字スペースとメモリを節約したほうがよいので、ルックアップ時間があまりにも短いのでしょうか。

4

1 に答える 1

0

TJクラウダーはそれをうまく説明したと思います。それは本当に依存します:

  1. 配列を「どのように」使用するか。
  2. 「なんと」「大きい」です。
  3. それは単純な配列ですか、それとも配列の配列の配列ですか!

たとえば、「myArray」のような配列の奥深くにオブジェクト (頻繁にアクセスする必要があるメソッドと属性を持つ) があり、myArray[100][20][40][90]そのオブジェクトを頻繁に使用し続ける場合は、オブジェクトを変数にキャッシュして、キャッシュされたバージョンを使用してください!

于 2013-11-10T13:18:15.257 に答える