Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

While sem expressão booleana como condição

O instrutor fez o código abaixo:

var alvo = '11a22b33c';
var exp = /(\d\d)(\w)/g;
var resultado = null;

while(resultado = exp.exec(alvo)){
    console.log(resultado);
}

Não entendi como que o while é executado (e depois parado), uma vez que dentro dele não temos uma expressão booleana, mas uma atribuição de variável com o retorno de um método.

1 resposta
solução!

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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software