Verán estaba practicando Closures en JavaScript he hice este código
function contador(numero){
return function(){
numero = numero +1
return numero
}
}
const contador1 = contador(24)
console.log(contador1())
console.log(contador1())
console.log(contador1())
console.log(contador1())
Me detuve a pensar y comprendo que la función que he retornado puede acceder a la variable numero que esta como parámetro en función contador porque esta dentro del ámbito de la función contador pero ¿no se supone que las variables dejan de existir y se destruyen cuando la función termina de ejecutarse? y vuelven a existir cuando la función es invocada de nuevo? o en JavaScript las variables siempre existen y para acceder a ellas solo debemos estar dentro del ámbito en el que están definidas sin importar que sea dentro de una función?
Se que queda como una referencia a ese ambito gracias a la funcion que retorno pero siempre he conocido el concepto de que las variables dejan de existir cuando la funcion termina de ejecutarse, la funcion deja de ejecutarse y retorna como valor una funcion pero no logro entender el como esa funcion puede acceder a las variables de la funcion en la que esta contenida ya que estas variables dejan de existir cuando la funcion termina de ejecutarse y solo existen cuando esta se esta ejecutando