Я заметил, что могу использовать a && b();
в качестве сокращенного обозначения для if(a) {b()}
или if(a) b();
. Обычный случай MOST для этой нерешительности - для объектов, имеющих 4-5 элементов.Javascript Performance: `if (a in b) {b [a]()}` vs `a в b && b [a]();` против перемещения объекта
Вопрос: есть ли выигрыш в производительности при использовании сокращения по сравнению с итерацией if(){}
или обычным обходом объекта for (var i in b) { b[i]() }
?
Как было предложено: код
var b = { x: 20, y: 30 }, // sample object
fn = function(v){ return v+5; }, // sample function
endValue = 0; // some lol
// go through all elements via if
if ('x' in b) { endValue += fn(b['x']); }
if ('y' in b) { endValue += fn(b['y']); }
//go through all elements via shorthand
('x' in b) && (endValue += fn(b['x']));
('y' in b) && (endValue += fn(b['y']));
//go through all elements via object traversing
for (var i in b) {
endValue += fn(b[i]);
}
Я бы предположить, может быть очень и очень незначительные различия в производительности, нужно использовать вышеупомянутый метод стенографии, чтобы иметь очень специфический порядок элементов объекта в вычислении endValue
.
Почему бы вам не попробовать себя и не увидеть? –
Что это связано с итерацией/перечислением? – Bergi
Я делал все тесты с условными обозначениями и обход объектов, я еще не пробовал стенографию, в настоящее время работаю над этим, я хочу знать, стоит ли это усилий, это много кода для чтения. – thednp