Olá Daniela, tudo bom?
Entender escopo no javascript pode realmente ser complicado, mas vamos lá!
As variáveis (var) estão "presas" no contexto de execução as quais estão declaradas, enquanto variáveis não declaradas sempre são globais, veja o exemplo abaixo:
function qualquer() {
y = 1; // Erro de referência no strict mode
var z = 2;
}
qualquer();
console.log(y); // loga "1"
console.log(z); // Erro de referência: z is not defined outside qualquer
Variáveis declaradas são criadas antes de qualquer código, enquanto variáveis não declaradas só são criadas quando o interpretador passa pelo código de atribuição delas.
No javascript temos o que chamamos de Hoisting (içamento).
Hoisting
Declarações no javascript (variáveis, functions..) são processados antes de qualquer código, ou seja, elas são içadas para o topo do seu código independentemente de onde foram declaradas no código "original"
numero = 2;
var numero;
// ...
// É implicitamente entendido como:
var numero;
numero = 2;
Por isso é sempre recomendado declararmos as variáveis no topo de seu escopo, seja dentro de funções ou no escopo global. Facilitando o entendimento sobre qual escopo as variáveis estão declaradas
É importante salientar que o hoisting só iça a declaração da variável e não a atribuição da mesma.
ex:
function faz_algo() {
console.log(numero); // undefined
var numero = 111;
console.log(numero); // 111
}
//É implicitamente entendido como:
function faz_algo() {
var numero;
console.log(numero); // undefined
numero = 111;
console.log(numero); // 111
}
No seu caso, você declarou sua variável dentro da function, como dito no início do post, essa variável está presa no contexto de execução, por isso você não terá acesso de fora, mas nada te impede te retornar esse valor utilizando o return!
Daniela, tudo isso pode parecer complexo no início, mas com o tempo tenho certeza que você vai tirar isso de letra! Qualquer dúvida pode contar comigo e com a comunidade para te ajudar.
Espero ter contribuído para sua jornada!
Abraços e bons estudos!