6

私はjavascriptの知識を向上させようとしていますが、いくつかの「ベストプラクティス」を探しているときに、ドキュメントオブジェクトに直接アクセスするよりも、DOMドキュメントをキャッシュして、その変数を介してアクセスする方が速いと誰かが指摘しました。

jsperfで行った編集で結果を確認できます:http://jsperf.com/jquery-document-cached-vs-uncached/3 編集:タイトルには「jsquery」が含まれています。これは元のテストだったためです。私の編集にはバニラJavaScriptが含まれていますが、フレームワークには違いはありません)

これは本当に私を興味深くさせます。基本的に私は方程式に新しい変数を導入していますが、それはどうすれば物事を遅くするのではなく速くすることができますか?

私の知る限り、「printa」は「b= a; printb」(スピーチの図)よりも優れているはずです。この場合の違いは何ですか?

4

2 に答える 2

2

document通常のJavascript変数とは異なります。その属性、特に内部ブラウ​​ザ構造からオンデマンドで作成される可能性のあるDOMにアクセスするときに、内部でどのような奇妙な魔法が起こっているのかはわかりません。

于 2012-06-18T20:07:37.320 に答える
2

私はここで説明を見つけたと思います(最後の部分の強調は私のものです):

ブラウザ内オブジェクトへのポインタ参照を格納します。この手法を使用して、後で使用するためにインスタンス化中にブラウザーオブジェクトへの参照を保存することにより、DOMトラバーサルトリップを減らします。たとえば、DOMが変更されることを期待していない場合は、ページの作成時に使用するDOMまたはjQueryオブジェクトへの参照を保存する必要があります。ダイアログウィンドウなどのDOM構造を構築している場合は、インスタンス化中にDOMオブジェクトへの便利な参照をいくつか保存してください。そうすれば、ユーザーが何かをクリックしたときに同じDOMオブジェクトを何度も見つける必要がなくなります。ダイアログウィンドウをドラッグします。DOMオブジェクトへの参照を保存しておらず、関数内で繰り返す必要がある場合は、そのDOMオブジェクトへの参照を含むローカル変数を作成できます。これにより、ローカル変数がスタックの最もアクセスしやすい部分に格納されるため、反復が大幅に高速化されます

したがって、私が正しく理解していれば、DOMをローカル変数にキャッシュすると、メモリスタックでのアクセスが容易になり、実行速度が向上します。

于 2012-10-19T10:48:03.470 に答える