JavaScriptパターン

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptパターン ―優れたアプリケーションのための作法

JavaScriptというだけの理由で買う。
大体実践している事が5割くらいかな。


例えば、

 for(var i = 0; i < myarray.length; i++){
   //do something
 }

普通のループだが、クライアント側のJSだと「myarray」は8割は、
HTMLCollectionだと思う。


んでも、もってIE6/IE7とかもサポートしてあげなきゃいけない場合、
こういうなんとくのループを書いてると、痛い目にあう。「なんか遅くね」と言われるわけだ。


HTMLCollectionを扱いう場合は、当然DOMアクセスが発生し、
IEだと特に顕著だけど、DOMアクセスはスゲー遅いのだ。
だから、

 for(var i = 0,max = myarray.length; i < max; i++){
   //do something
 }

の様に書く。

 max = myarray.length

のコードでmaxにlengthキャッシュしといけば、DOMアクセスは初期化時のみで済む。
もちろんループ内でコレクションが変更される場合はコレではだめです。


JavaScripterの間ではこの程度は常識かもしれないけどね。
ただ、あんまjavascriptとか良くわかりませんという人たちで、
大規模Webアプリとか作ると往々にして、こういう基本的なパフォーマンス問題にハマっているケースは結構あるとのではないかと思う。
クライアントサイドはあんましらないけど、文法もJavaに近いから、
という感じでやりだすとなんて事ない普通のコードだからね。
これがあらゆる画面にばらまかれている状態になる前になんとかしておくべき。


とまあ、そういう事が書いてあるので、
JavaScriptのイロハが分かったら読んだ方がいい本。
「サイ本」と併せて読むといい。

JavaScript 第5版

JavaScript 第5版