勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

jQueryやJavaScriptで認識違いしていたところのメモ(高速化)

      2014/05/17

認識違いしていたり、知らなかったりでもっと高速な
処理を行えそうな点があったのでメモ。

----------

■ループの時はキャッシュを活用する

<script>
var huga;
for (var i = 1; i < 100000; i++) {
huga += $('#hoge').val();
}
</script>
<input type="checkbox" value="1" id="hoge">

<script>
var hoge = $('#hoge').val();
var huga;
for (var i = 1; i < 100000; i++) {
huga += hoge;
}
</script>
<input type="checkbox" value="1" id="hoge">

後者の方が4倍近く速かった。
一度しか使わない変数とかはまとめた方がスマートとか
勝手に解釈してたけど、4倍差は見逃せないので気をつける。

----------

セレクタの指定の注意

<div class="huga">
<div>
<span class="hoge">
hogehoge
</span>
</div>
</div>

上記みたいなソースでclass=hogeをjQueryで操作する際、
$('.hoge')としていたけど、$('span .hoge')みたいにタグを
検索してからclassを探す方が速いとのこと。

id指定 > タグ指定 > class指定の順になるので、
出来るだけclass単体での指定は避ける。

タグからつける、ってのが知らなかった。

ただ$('div .huga div span .huga')みたいに長ったらしく書くと
余計に時間がかかる。

----------

cssとかを弄る場合はclassを書き換える

DOMの操作は重たいのでスタイルは別途作っておいて、
addClassとかremoveClassでclassを書き換えた方が速い。

----------

 - JavaScript

  関連記事

setTimeoutの注意点

javascriptのsetTimeoutにて変数を用いた際に 想定外の挙動を起 ...

JavaScriptで画像に光沢をつける(glossy.js)

凄く簡単に光沢がつけられるライブラリがあったのでメモ。 ライブラリを呼び出してc ...

javascriptの文末

下記みたいなコードがあって、文末に「;」が 無いのになんで動くのこれ? となった ...

八地方区分→都道府県→路線→駅名の連携したセレクトメニュー

八地方区分(関東、近畿等)をプルダウンから選ぶと区分内の都道府県プルダウンが表示 ...

3Dデータ(obj,stlファイル)をブラウザ上で表示する方法  

3Dデータをブラウザで表示させて、違う方向から見たり、縮小拡大をしたいという案件 ...

JavaScriptで文字列から数値へ変換時の注意

JavaScriptで文字列から数値へ変換時に思った挙動と異なることがあった。具 ...

JavaScriptで年齢計算

JavaScriptで年齢計算。 ■ソース function ageCalcul ...

JavaScriptで多次元連想配列

JavaScriptで多次元の配列を作る際にいつも迷ってしまうのでメモ。 ■こう ...

GoogleMapAPIでヒートマップを表示する方法

GoogleMapAPIで花粉状況や雨量を可視化しやすいようなヒートマップ的なも ...

クロスドメイン突破をjavascriptで行う

ajaxとかでクロスドメインを突破する際は、 PHPファイルを介すかJSONPを ...