Porque a variável temp está recebendo um valor dentro dos ( ) do while ? Como isso funciona? e se ela receber o valor dentro do bloco não funciona porque?
Porque a variável temp está recebendo um valor dentro dos ( ) do while ? Como isso funciona? e se ela receber o valor dentro do bloco não funciona porque?
Oi, Lucas! Tudo bem?
Desculpa a demora por um retorno.
A atribuição de uma variável dentro de um teste de condição de um loop funciona atribuindo um valor à variável que é usado como parte do teste de condição do loop. O teste de condição é avaliado com base nesse valor.
O que acontece no código é que a expressão (temp = regex.exec(texto))
atribui o resultado da expressão regex.exec(texto)
à variável temp
. A função exec()
da expressão regular retorna o próximo match correspondente ao padrão especificado na regex.
A atribuição (temp = regex.exec(texto))
retorna o valor atribuído à variável temp. Se a expressão regex.exec(texto)
não encontrar um match, ela retorna null, o que encerra o loop.
Portanto, a atribuição de temp = regex.exec(texto)
ocorre dentro dos parênteses do while, permitindo que o resultado seja comparado com null para determinar se o loop deve continuar ou não.
Se a atribuição temp = regex.exec(texto)
fosse movida para dentro do bloco do while, isso resultaria em um comportamento diferente. A cada iteração do loop, a variável temp seria redefinida e receberia o próximo match da expressão regular. No entanto, a condição do while não estaria verificando o valor de temp atualizado e, portanto, o loop seria executado indefinidamente.
Ao colocar a atribuição dentro dos parênteses do while, a condição do loop verifica o resultado da atribuição atualizada e garante que o loop seja encerrado quando temp
for null
, ou seja, quando não houver mais correspondências na string de texto.
Espero ter ajudado na compreensão do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!