Оператор запятой в цикле FOR, как это работает? - PullRequest
2 голосов
/ 23 января 2012

Может кто-нибудь объяснить оператор запятой в операторе FOR?

function funct_1(c){
    for (var a = x, e = y; 0 < c; ){ 
         var p = c/2;
         var c = c/10; // wtf, it is already defined as function argument!!
    }
}

Кроме того, последнее утверждение типа "a ++" отсутствует, я никогда не видел ничего подобного. что это значит? Спасибо!

Ответы [ 3 ]

2 голосов
/ 23 января 2012

Запятая просто добавляет разделение для нескольких объявлений. Другими словами, ваш цикл for устанавливает a равным x, а также e равным y.

Что касается отсутствия оператора приращения, тот факт, что он отсутствует, просто означает, что цикл for не будет явно увеличивать никакую переменную.

1 голос
/ 23 января 2012

Запятая позволяет вам инициализировать более одной переменной в начале цикла. А отсутствующий оператор приращения означает, что внутри цикла должен быть какой-то сценарий, который в конечном итоге будет удовлетворять условию завершения, иначе цикл никогда не завершится.

0 голосов
/ 23 января 2012

Оператор запятой в C, C ++ и JavaScript (возможно, C #) работает следующим образом:

comma_operator(statement_1, statement_2) {
     execute statement_1
     return statement_2
}

Итак, в вашем цикле он инициализирует два целочисленных значения, a и e, которые установлены на x и y соответственно. Нет приращения, потому что цикл сравнивается с c, который, вероятно, установлен где-то внутри цикла.

...