LoginSignup
3
1

More than 5 years have passed since last update.

要素を取得してきたときに変数に格納する理由

Posted at

変数を取得したときにわざわざ変数に格納しなくてもそんなに回数使わないならいいのではないかと考えていたが、パフォーマンスに割と影響を与えるということがわかったのでメモ。

html
<div id="sampleId">
  <span>a</span>
  <span>a</span>
  <span>a</span>
  <span>a</span>
  <span>a</span>
</div>  
js
let elem;
elem = document.getElementsByTagName('span');

//lengthを毎回取得
let statTime1 = new Date();
for (let i = 0; i < 100; i++) {
  for (let j = 0; j < elem.length ; j++) {
    console.log(elem[j])
  }
}
let endTime1 = new Date();


//lengthを予め定義
var statTime2 = new Date();
len = elem.length
for (let i = 0; i < 100; i++) {
  for (let j = 0;j < len; j++) {
    console.log(elem[j])
  }
}
var endTime2 = new Date();

console.log(endTime1 - statTime1 + 'ms'); //567ms
console.log(endTime2 - statTime2 + 'ms'); //465ms

処理の最初と最後にDateオブジェクトを生成することで、その差分から処理速度が計算できる。

length要素を毎回取得しに行くので、その分パフォーマンスが悪くなる。変数に格納すると、キャッシュされ、同じように監視する必要がなくなり、パフォーマンス性が上がることが、上記のことからわかった。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1