Странный кортеж цикла - PullRequest
       2

Странный кортеж цикла

4 голосов
/ 27 февраля 2012

Я пишу синтаксический анализатор JavaScript и, тестируя его в библиотеке prototype.js, выдает ошибку в этом коде:

строка 4000:

while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
    soFar = m[3];

    parts.push( m[1] );

    if ( m[2] ) {
        extra = m[3];
        break;
    }
}

Я уменьшил это до этого:

while ( (a, b) == c ) {}

Это действительно правильный JavaScript? Согласно ECMA-262 цикл while имеет следующий синтаксис:

while ( Expression ) Statement

Какое выражение есть (a, b) == c? Я не думал, что кортежи поддерживаются в JavaScript?

1 Ответ

6 голосов
/ 27 февраля 2012

Это не кортеж; это оператор запятой (см. также Wikipedia ). Оператор запятой оценивает первый операнд, а затем второй операнд и выдает значение второго.

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