Retirei do código original o (input.value = "";) porque achei que o retorno da string vazia poderia ter dado erro. Mas o problema persiste.
A cada novo teste no input o único número que traz resultado correto é o 2 (como demonstrado dentro do array, o primeiro número possível), já todos os demais retornam com erro.
Revisei de acordo com o vídeo e não encontro discrepâncias. Preciso de olhos de outras pessoas aqui pra me ajudar.
<script>
var segredos = [2, 4, 6, 8];
var input = document.querySelector("input");
input.focus();
function verifica() {
var achou = false;
var posicao = 0
for ( posicao ; posicao < segredos.length ; posicao++) {
if ( input.value == segredos[posicao] ) {
alert("Você acertou!");
achou = true;
break;
}
if (achou == false) {
alert("Você errou");
break;
}
}
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>