Что означает назначение при проверке состояния? - PullRequest
0 голосов
/ 03 января 2019
while(a = foo())
{
    bar();
}

Это проверка:

  • Если присвоение выполнено успешно, запустите панель или
  • Если a определено и не равно NULL, запустите панель или
  • Что-то еще?

1 Ответ

0 голосов
/ 03 января 2019

На каждой итерации он присваивает результат вызова foo() a, а если этот результат был верным, он запускает цикл и повторяет попытку до тех пор, пока результатом вызова не станет false.

Например, хотя присваивание внутри условия обычно является запахом кода, его можно увидеть достаточно часто при попытке перебрать группы захвата в глобальном регулярном выражении:

const str = 'abcdefg';
const pattern = /(.)./g;
let match;
while (match = pattern.exec(str)) {
  console.log('first captured group was ' + match[1]);
}
// after the last iteration, `match` is null, so the loop stops

Если присвоение не успешно, и причиной этого сбоя будет ошибка, то весь сценарий останавливается из-за ошибки,(если вокруг него нет блока try / catch)

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