f = families[i]
- это выражение, которое возвращает значение families[i]
. (У этого также есть побочный эффект присвоения этого значения f
)
Если families.length === 2
, то families[2] === undefined
, таким образом, выражение возвращает undefined
, что ложно и прерывает цикл.
Для большего удовольствия от взлома вы можете включить
for (var i = 0, f; f = families[i]; i++) {
// body
}
в
for (var i = 0, f; f = families[i++]; /* body */);
Возможно, вам придется заменить строку ;
на ,
, а строку заменить i
на i-1
. Вы также просто убили читабельность.
Следует также отметить, что цикл for глуп для удобства чтения.
Object.keys(families).forEach(function(key) {
var family = families[key];
/* body */
});
Значительно более читабелен.