Loops

Digamos que você queira imprimir os números de 1 a 100, ou saudar cada caractere de uma palavra, ou continuar fazendo uma pergunta até que a resposta esteja correta. Você poderia escrever a mesma linha cem vezes, mas isso é tedioso de digitar e pior ainda de alterar. Um loop é como você diz ao JavaScript para executar um pedaço de código novamente e novamente, então você escreve o trabalho uma vez e deixa a linguagem fazer a repetição. Este capítulo cobre os três loops que você usa mais: for, while e for...of.
O loop for
O loop for é aquele que você usa quando sabe quantas vezes repetir. Ele conta para você. Aqui ele está imprimindo os números de 0 a 4:
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 0
// 1
// 2
// 3
// 4A parte entre parênteses tem três pedaços, separados por ponto-e-vírgula:
let i = 0é o início: cria um contador chamadoie o define como 0.i < 5é a condição: o loop continua enquanto isso for verdadeiro.i++é o passo: após cada passagem, adiciona 1 ai(i++é abreviação parai = i + 1).
Então o loop começa i em 0, verifica que i < 5, executa o código entre chaves, depois adiciona 1 e verifica novamente. Quando i atinge 5 a condição é falsa e o loop para.
for loop repete um número fixo de vezes e conta para você. Seu cabeçalho tem três partes: um início como let i = 0, uma condição como i < 5 que o mantém funcionando, e um passo como i++ que o move adiante. Quando a condição fica falsa, o loop para. O loop while
Às vezes você não sabe quantas vezes repetir, você só sabe uma condição que deve permanecer verdadeira. É para isso que o loop while existe. Ele continua funcionando enquanto sua condição se mantiver:
let count = 3;
while (count > 0) {
console.log(count);
count = count - 1;
}
console.log("Go");
// 3
// 2
// 1
// GoO loop verifica count > 0, executa o código, depois verifica novamente. Observe que algo dentro do loop muda count, então a condição eventualmente fica falsa e o loop para. Se nada dentro nunca tornar a condição falsa, o loop corre para sempre. Isso é um loop infinito, e congelará seu programa, então sempre certifique-se de que a condição pode mudar.
while loop repete enquanto sua condição é verdadeira, sem contador integrado. Use-o quando você não conhece o número de repetições antecipadamente. Sempre mude algo dentro do loop para que a condição possa ficar falsa, ou você terá um loop infinito que congela o programa. Iteração sobre uma string com for...of
Os loops for e while contam com um número, mas frequentemente você quer visitar cada item em algo diretamente. for...of faz isso. Aqui ele percorre cada caractere de uma palavra:
for (const char of "hello") {
console.log(char);
}
// h
// e
// l
// l
// oLeia como "para cada caractere da palavra". A cada passagem, char contém o próximo caractere, e você nunca toca em um contador ou uma condição. É mais limpo que um loop for quando tudo que você quer é olhar para cada item em sequência.
Você usará principalmente for...of em arrays, que são listas de valores que você conhecerá nos próximos capítulos. Uma string é uma boa primeira coisa para fazer loop porque já é uma sequência de caracteres, e for...of a trata exatamente assim.
for...of visita cada item diretamente, sem contador e sem condição para gerenciar. Em uma string, cada passagem lhe dá o próximo caractere. Você o usará mais em arrays depois, mas uma string é uma primeira coisa limpa para fazer loop porque já é uma sequência de caracteres. De onde loops vão daqui
Loops são como você para de se repetir e deixa a linguagem fazer a repetição. O loop for conta um número conhecido de vezes, while repete enquanto uma condição se mantém, e for...of percorre os itens de uma sequência diretamente. O único hábito a levar daqui: certifique-se de que cada loop pode terminar, e prefira for...of quando você só precisa de cada item.
A razão real pela qual loops importam é que a maioria dos dados com que você trabalha vem em coleções. Os próximos capítulos apresentam arrays, as listas que você fará loop constantemente, e depois os métodos de array que frequentemente substituem um loop escrito manualmente quando você está transformando dados. Se você quiser afiar as condições em que seus loops dependem, condicionais cobre as comparações que decidem quando um loop continua e quando para.

