Considere a função xpto em código JavaScript. function xpto (s) { let text = "" for (const x of s) { text = x + text; } return text; } A expressão xpto("banana" + "laranja") retorna:
- A)lbaarnaannjaa
Errada, porque não corresponde à string completa invertida nem à ordem original do texto concatenado.
- B)banalaranja
Errada, porque mantém a maior parte da ordem normal das palavras, mas a função devolve o texto invertido.
- C)laranjabanana
Errada, porque traz as palavras na ordem trocada, mas não faz a inversão caractere por caractere exigida pelo código.
- D)ajnaralananab
Certa, porque a função monta a string ao contrário, caractere por caractere, sobre "bananalaranja".
- E)ananabajnaral
Errada, porque parece uma inversão parcial, mas não é o resultado exato da leitura reversa do texto concatenado.
Gabarito: D
A função xpto percorre a string caractere por caractere com o laço for...of. Em cada volta, ela faz uma coisa simples, mas traiçoeira: coloca o caractere atual na frente do que já havia sido montado. Ou seja, ela vai invertendo a ordem do texto, como quem lê um bilhete no espelho. Se você aplica isso a "banana" + "laranja", primeiro a concatenação forma "bananalaranja". A partir daí, a função lê letra por letra e reconstrói tudo de trás para frente. O primeiro caractere lido vira o último da nova string, e assim por diante. Então o resultado final é a string invertida de "bananalaranja", que fica "ajnaralananab". É exatamente por isso que a alternativa D está correta. Em JavaScript, isso acontece de forma bem direta porque o for...of percorre a string em ordem natural dos caracteres, e a atribuição text = x + text inverte a montagem. Resumo de prova: concatenou antes, inverteu depois. Parece inocente, mas a função é uma pequena máquina de fazer espelho.