Quando uma variável é definida dentro de uma função, ela tem o escopo local, ou seja, ela pode apenas ser acessada dentro da função, você estava utilizando 'array' na função verifica(), quando deveria utilizar a variável 'segredos' que recebeu o array gerado dentro da função povoaArray().
<!DOCTYPE html>
<meta charset="UTF-8">
<input>
<button>
Sortear!
</button>
<script>
function pulaLinha(){
document.write("<br>");
}
function mostra(frase){
document.write(frase); /* xx Antes: você estava chamando a função na
criação da mesma -> mostra(frase);*/
}
function sorteia() {
return Math.round(Math.random() * 10);
}
function povoaArray(quantidade){
var array = [];
numero = 1;
while(numero<=quantidade){
var numeroAleatorio = sorteia();
if(numeroAleatorio !== 0){
var achou = false;
for (var posicao = 0; posicao < array.length; posicao++){
if(array[posicao] == numeroAleatorio){
achou = true;
break;
}
}
if(achou==false){
array.push(numeroAleatorio);
numero++;
}
}
}
return array;
}
var segredos = povoaArray(5);
console.log(segredos);
var numEscolhido = document.querySelector("input");
numEscolhido.focus();
numEscolhido.value = "";
function verifica(){
var achou = false;
for (var posicao = 0; posicao < segredos.length; posicao++){ /* xx Antes: estava
utilizando array.length, e a variável array foi definida dentro de uma função, então aqui ela nem pode ser acessada por causa do escopo */
if(segredos[posicao] == numEscolhido.value){ // Aqui tbm array -->> segredos
alert("Você acertou!");
achou = true;
break;
}
}
if(achou == false){
alert("Errroouu!"); // xx Antes: estava com espaço-> alert ("Errroouu!");
}
}
var checar = document.querySelector("button");
checar.onclick = verifica;
</script>