En el código se nos presenta que en el for, posicion debe ser menor a "secretos.length", si secretos tiene 4 numeros, el for deberia hacer 3 iteracciones. ¿porque también analiza el numero 9 del array? es decir, porque tambien llega a analizar la posicion 4?, realice el código de las dos formas con el "<" y el "<=" y de las dos formas funciona correctamente.
<meta charset="UTF-8">
<input/>
<button>Verificar si acertó con el secreto</button>
<script>
var secretos = [3,5,7,9];
var input = document.querySelector("input");
input.focus();
function verificar(){
var encontrado = false;
for (var posicion = 0; posicion < secretos.length; posicion++){
if (parseInt(input.value) == secretos[posicion]){
alert("Usted acertó");
encontrado = true;
break;
}
}
if (encontrado == false){
alert("Usted erró");
}
input.value = "";
input.focus();
}
var button = document.querySelector("button")
button.onclick = verificar;
</script>