Olá, realizei algumas mudanças para fazer com que o código funcionasse da maneira que achei que deveria funcionar. primeiramente coloquei a variável chute dentro da função "verifica", pois se ele estiver fora, no momento em que o código for lido a variável não receberá valor. Depois coloquei um else antes do segundo if da função verifica para que evitar que o else final funcionasse quando o primeiro if fosse rodado. Por fim coloquei o ultimo if(fim==true) dentro da função, pois quando o programa rodar ele ele irá estar como false, se ficar de fora.
<meta charset="UTF-8">
<input>
<button>adivinhar</button>
<script>
function pulaLinha() {
document.write("<br>");
}
function mostra(frase) {
document.write(frase);
pulaLinha();
}
function sorteia(n){
return Math.round(Math.random() * n)
}
var input = document.querySelector("input")
var button = document.querySelector("button")
var fim = false
var numeroPensadoAte10 = sorteia(10)
console.log(numeroPensadoAte10);
function verifica(){
var chute = input.value
if(chute < numeroPensadoAte10){
alert("Chute um pouco mais alto");
}else if(chute > numeroPensadoAte10){
alert("Chute um pouco mais baixo");
}else{
fim = true
}
if(fim == true){
alert("você acertou")
}
}
button.onclick = verifica
</script>