eu fiz o código antes de ver as alternativas, o meu ficou assim:
<meta charset="utf-8">
<input type="" name="">
<button>Exibir texto digitado</button>
<script type="text/javascript">
function alerta(){
var input = document.querySelector("input");
alert(input.value);
}
var button = document.querySelector("button");
button.onclick = alerta;
</script>
Funciona! mas por questão de boa prática, deixar var input = document.querySelector("input"); dentro da função é aceitável ou obrigatoriamente tenho que declarar ela fora da função?