Depois de muito quebrar a cabeça, consegui resolver o problema com o código abaixo. Onde fiquei preso por bastante tempo foi no loop do for, o meu segundo if (para repetido == false) estava dentro dele e o contador não estava saindo do 1, fazendo com que o for ficasse em um loop infinito, minha dúvida é pq isso ocorre?
<meta charset="UTF-8">
<h1>Receitas do Yan</h1>
<script type="text/javascript">
var ingredientes = [];
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
var contador = 1;
function mostra(frase) {
document.write((contador - 1) + " - " + ingrediente);
document.write("<br>");
}
while( contador <= quantidade) {
var ingrediente = prompt("Informe o ingrediente " + contador);
var repetido = false;
for(var posicao = 0; posicao < ingredientes.length ; posicao++) {
if(ingredientes[posicao] == ingrediente) {
repetido = true;
break;
}
}
if(repetido == false) {
ingredientes.push(ingrediente);
contador++;
mostra();
}
}
console.log(ingredientes);
</script>