Salve, Maurício!
Esse método exp.exec(alvo)
retorna um objeto assim: [ '11a', '11', 'a', index: 0, input: '11a22b33c', groups: undefined ]
.
Quando a expressão regular não encontra nada, ele retorna null
.
O que acontece é que o JavaScript é dinâmicamente tipado, então ele converte o resultado do método para um booleano.
Se o valor é 0
, -0
, null
, false
, NaN
, undefined
ou é uma string vazia(""
), o JS converte para false
.
Todos outros valores são convertidos para true
.
No nosso caso, quando o retorno do exp.exec(alvo)
é null
, ele converte para false
e encerra o loop.
Sobre a atribuição, o retorno desse método é armazenado na variável resultado
para podermos imprimir o seu valor no console: console.log(resultado)
.
Uma outra forma de escrever esse while seria:
while(exp.exec(alvo)){
console.log('passou por aqui');
}
Mas repare que nesse caso não temos acesso ao resultado
.