2

具体的には、このコードは次のとおりです。

var style = el.style;
var x = style.left;
var y = style.top;

これよりも効率的です:

var x = el.style.left;
var y = el.style.top;

最近、これについて同僚と話しました。最初のスニペットは、スタイル オブジェクトをキャッシュするため getter 呼び出しを節約しますが、スタイル オブジェクトへの参照をもう 1 つ作成し、変数をもう 1 つ使用します。

4

3 に答える 3

0

大した問題にはなりません。

jsperf で確認するためのテストを作成しました...首と首、ほとんど違いはありません(私のマシンでは統計的に有意な違いはありません):

http://jsperf.com/alias-vs-dot-lookup-speed

乾杯。

于 2013-01-06T03:01:21.083 に答える
0

この答えは、あなたが本当に気にかけている質問によって異なります。

  1. パフォーマンスが主な関心事である場合は、すべての重要なブラウザーで 2 つのケースを測定し、それらの測定結果を評価する必要があります。
  2. 従うべき経験則を探しているだけなら、このような 2 つの用途のためだけに新しい変数を作成することは、パフォーマンスに非常に敏感なコード部分でない限り、おそらく価値がないと主張します。 1勝。
  3. コードの単純さ、コンパクトさ、および速度の間で適切なバランスを探している場合は、この単純なケースで余分な変数と余分なコード行を避けることをお勧めします。パフォーマンスの違いはそれほど大きくないので、複雑さとコードを追加する必要はありません。
  4. 正確性の問題を探している場合、それは完全に個人的な意見であり、双方が議論することができます. 私は#3の勝利を主張します。他に決定を下すものがない場合は、シンプルさを求めてください。
于 2013-01-06T03:04:01.510 に答える
0

私はこれを時期尚早の最適化として分類します。何らかのパフォーマンスの問題が発生していない限り、ここでどのアプローチを採用するかについて心配する必要はありません (特に、これほど小さなコードの場合)。とにかく、スタイル プロパティが既に DOM によって内部的にキャッシュされていても驚かないので、アクセスするたびに余分なオーバーヘッドが発生することさえありません。

JavaScript で 2 回しか使用されないオブジェクトをキャッシュすることをお勧めしますか?

あなたの質問に答えるために-アクセスに多くのオーバーヘッドがある場合、一般的にはキャッシュを使用することをお勧めします。たとえば、アクセスするたびに作成されるか、コレクションで高価なルックアップが発生する可能性があります。ただし、純粋にオブジェクトを直接返す場合、メリットはありません。

正確な答えを求めている場合、それを得る唯一の方法は、実際に両方のバージョンをベンチマークすることです。ただし、特定のコードでは、パフォーマンスの違いはごくわずかです。ただし、別の変数を導入すると、コンパイラに不要なオーバーヘッドが追加されます (小さいとはいえ)。

于 2013-01-06T03:04:27.700 に答える