以下のバックボーンのスニペットでは、この行
(ev = events[i]).callback.call(ev.ctx);
明確ではありません。変数には配列のインデックス作成を減らす以外の目的はないように思われるため、これev = events[i]
は以前に解釈されたと思います。ev.ctx
これが正しいと仮定すると、配列のインデックス作成にはコストがかかるため、これは実行されますか?組み込みエンジニアリングでは、限られたリソースで作業している場合、配列のインデックス作成にコストがかかることを私は知っています。しかし、JavaScriptではこれはそれほど問題ではないと思いました。
バックボーンスニペット
triggerEvents = function(events, args) {
var ev,
i = -1,
l = events.length;
switch (args.length) {
case 0:
while (++i < l) {
(ev = events[i]).callback.call(ev.ctx);
}
return;
case 1:
while (++i < l) {
(ev = events[i]).callback.call(ev.ctx, args[0]);
}
return;
case 2:
while (++i < l) {
(ev = events[i]).callback.call(ev.ctx, args[0], args[1]);
}
return;
case 3:
while (++i < l) {
(ev = events[i]).callback.call(ev.ctx, args[0], args[1], args[2]);
}
return;
default:
while (++i < l) {
(ev = events[i]).callback.apply(ev.ctx, args);
}
}
};