ループの高速化
例えば、文書上の特定の要素を捉えてそれらに何かしたりする時とかって
var lists = document.getElementsByTagName('LI'); for (var i = 0; i < lists.length; i++) { lists[i].innerHTML = 'ほげ'; }
な風に書いてたんだけど、こういう風に書くとループの度にlistsノードリストのlengthプロパティを参照する為、要素数がかなりの数だったりすると、体感出来るレベルで遅くなったりするらしい。なので、こういう時は
var lists = document.getElementsByTagName('LI'); var n = lists.length; for (var i = 0; i < n; i++) { lists[i].innerHTML = 'ほげ'; }
とか
var lists = document.getElementsByTagName('LI'); var i = 0; while (lists[i]) { lists[i].innerHTML = 'ほげ'; i++; }
って書く事。今まではもうなんかのおまじないといった感じで、ループん時は何も考えずに
for (var i = 0; i < lists.length; i++) {
って書いてたけど、これからは注意しよう。