私の友人 (私よりもはるかに JavaScript に熟練している) が、最近いくつかのコードを最適化するのを手伝ってくれました。ただし、実際には、これがパフォーマンスに大きな影響を与えているようには見えません。なぜこれが当てはまるのかを説明するJavaScript心の内部の仕組みに精通している人はいますか? ある方法を別の方法よりも使用する理由はありますか?
つまり、これは次のとおりです。
function showI(e) {
var iVal = $(e).attr('iteration');
var iValx99 = iVal * 99;
var iValx999 = iVal * 999;
alert(iVal + ' // ' + iValx99 + ' // ' + iValx999);
}
var element;
for (var i = 0; i < 50; i++) {
element = $('<div />', {
'class': 'iteration',
'iteration': i
});
element.on('click', function() {
showI(element);
});
element.appendTo('body');
}
対:
var element;
for (var i = 0; i < 50; i++) {
(function() {
var j = i;
element = $('<div />', {
'class': 'iteration'
});
element.on('click', function() {
var iVal = j;
var iValx99 = iVal * 99;
var iValx999 = iVal * 999;
alert(iVal + ' // ' + iValx99 + ' // ' + iValx999);
});
element.appendTo('body');
})();
}
jsperf ベンチマークの例:
http://jsperf.com/function-click-on-every-element-vs-calling-a-function/2