Fala Matheus, tudo beleza?
O length nada mais é que um atributo pertencente a todo array onde você consegue saber seu tamanho.
Sempre que fizermos nomeDoArray.length
, isso nos retornará seu tamanho.
Mas onde isso foi definido?
A maioria das linguagens de programação trabalha com estruturas de dados, como arrays e outros tipos de listas, etc...
O length
é uma propriedade que está na definição dessas estruturas mais complexas (listas), que deve retornar sempre o tamanho do array.
Então, você não precisa se preocupar em definir isso, já que isso já vem como parte integrante da estrutura de dados utilizada! (quem implementou a estrutura colou lá para nós)
Respondendo a outra dúvida,
A ideia de se declarar a variável dentro do while
parte da necessidade de que se é necessário sempre se redefinir a variável.
A cada iteração do while, nossa variável é redeclarada assumindo o valor original dela, garantindo nossa lógica.
Caso declarássemos fora, essa variável não seria 'resetada' e sempre teria o ultimo valor salvo, sendo true
caso existissem ingredientes repetidos.
Assumindo o valor true (oposto do que setamos originalmente), toda a lógica é comprometida, fazendo com que não funcione conforme o esperado.
Caso algo tenha ficado nebuloso, basta perguntar!
Espero ter ajudado,
Abraços.