ループの高速化

例えば、文書上の特定の要素を捉えてそれらに何かしたりする時とかって

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++) {

って書いてたけど、これからは注意しよう。