Hola Darling.
Eso ocurre porque todas las variables y constantes utilizadas dentro de una etiqueta <script>
y de manera general; todas las variables declaradas en cualquier lenguaje de programación, tienen un alcance o ámbito.
El alcance o ámbito de la variable declarada, depende de donde fue declarada.
En nuestro caso si la declaras dentro de nuestra etiqueta <script>
, esa variable declarada tendrá el alcance o ámbito en toda nuestra etiqueta <script>
; es decir, toda sentencia, instrucción o función que este dentro de nuestra etiqueta tendrá acceso a nuestra variable (entiéndase alcance como quién y donde puede usar nuestra variable declarada).
Si la declaras dentro de una función, solo la función puede acceder a esta variable; una vez que nuestro programa sale de la función, no es capaz de reconocer esa variable declarada en esa función especifica.
Igual si declaras una variable dentro de un while
o dentro de un for
o de un if-else
; su alcance o ámbito solo será dentro de ese ciclo en particular y no estará disponible para las demás funciones, ciclos o procedimientos de tu código.