Итак, я спорил с коллегой-инженером о цикличности в JavaScript.Проблема касалась встроенной для конструкции цикла и метода each () прототипа.Теперь я знаю, что есть много документов / блогов о для и для каждого , но эта дискуссия несколько иная, и мне хотелось бы услышать, что думают некоторые из вас.
Давайте возьмем следующий цикл для примера
пример 1
var someArray = [blah, blah, blah,...,N];
var length = someArray.length;
for(var index = 0; index < length; index++){
var value = someFunction(someArray[index]);
var someOtherValue = someComplicatedFunction(value, someArray[index]);
//do something interesting...
}
Для меня это вторая натура, главным образом потому, что я научился кодировать в C , и это привело меня.Теперь я использую For-each в C # и Java (потерпите меня, я знаю, что мы говорим о JavaScript здесь ...), но всякий раз, когда яуслышать для петель , сначала я думаю об этом парне.Теперь давайте посмотрим на тот же пример, написанный с использованием метода Prototype: each ()
пример 2
var someArray = [blah, blah, blah,…..,N];
someArray.each(function(object){
var value = someFunction(object);
var someOtherValue = someComplicatedFunction(value, object);
//do something interesting...
});
В этом примере, сразу же, мы видим, чтоКонструкция содержит меньше кода, однако я думаю каждый раз, когда мы зацикливаемся на объекте, мы должны создать новую функцию для работы с рассматриваемой операцией.Таким образом, это плохо сформует коллекции с большим количеством объектов.Таким образом, аргумент моего приятеля состоял в том, что пример 2 гораздо проще для понимания и на самом деле чище, чем пример 1 из-за его функционального подхода.Мой аргумент заключается в том, что любой программист должен быть в состоянии понять пример 1, поскольку он преподается в программировании 101. Поэтому более простой аргумент не применяется, и пример 1 работает лучше, чем пример 2 .Тогда зачем возиться с # 2 .Теперь, после прочтения, я обнаружил, что когда размер массива мал, накладные расходы на пример 2 ничтожны.Однако люди продолжали говорить о строках кода, которые вы пишете, меньше и что пример 1 подвержен ошибкам.Я до сих пор не покупаю эти причины, поэтому я хотел знать, что вы, ребята, думаете ...