На каждой итерации он присваивает результат вызова 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
)