Javascript - что делает эта строка? - PullRequest
8 голосов
/ 12 февраля 2010

Что делает следующий javascript?

var groups = countrylist.split(',');    
for( var i = -1, group;  group = groupsCounty[++i]; ){
  ...
}

Ответы [ 5 ]

11 голосов
/ 12 февраля 2010
With i starting at -1
increase i by 1
get the ith element from the groupsCounty array
if there is no such element: stop
otherwise: assign it to group and carry on (with whatever "…" is)

Это оптимизированная версия:

for (var i = 0; i < groupsCounty.length; i++; ){
    var group = groupsCounty[i];
    …
}
2 голосов
/ 12 февраля 2010

Это делает это: -

var groups = countrylist.split(',');    
for( var i = 0;  i < groups.length; i++ )
{
  var group = groups[i]
  ...
}

Единственное реальное отличие состоит в том, что вышесказанное гораздо более распространено и более легко узнаваемо. Вы бы не разместили приведенный выше код с вопросом «Что это делает?».

Код, который вы разместили, является примером умной разработки, но не обязательно хорошей практики кодирования.

2 голосов
/ 12 февраля 2010

Он перебирает элементы групп, используя в качестве защитного условия наличие значения в группе. Т.е. использование JavaScript Truthiness для контроля количества итераций цикла, потому что guard будет иметь значение false, когда ему не может быть присвоено значение

1 голос
/ 12 февраля 2010

Цикл for проходит через массив groups, пока groupsCounty[++i] не вернет ложное значение.

С использованием следующих терминов:

for (<initial-expression>; <condition>; <final-expression>)

Начальное выражение var i = -1, group объявляет переменные i и group. Для каждой итерации цикл условие group = groupsCounty[++i] присваивает следующее значение массива group. Если это выражение ложно (например, groupsCounty[++i] возвращает undefined при выходе за пределы), цикл останавливается. И final-выражение пусто, поскольку i уже увеличено в выражении contition .

0 голосов
/ 12 февраля 2010

Это эквивалентно

for (var group in groupsCounty) {
  ...
}

С добавленной стоимостью доступа к индексу (i).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...