De acuerdo con su traducción literaria, el “scope” es el alcance de una variable. Este determina en qué parte del código puede ser utilizada cierta variable, dependiendo de cómo y en qué sitio fue declarada.
Las variables declaradas fuera de cualquier función tienen un alcance global, es decir, en toda la ventana, lo que significa que su valor puede ser usado o reasignado en cualquier otra función.
Usemos como ejemplo el código siguiente (el cual encontrarás en el siguiente enlace de Github):
https://github.com/Pinsec/Scopes-y-Closures/blob/master/scopes.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<div id="identificador_1">El siguiente número es la muestra de una variable global: </div> <div id="identificador_2">El siguiente número es la muestra de una variable local:</div> <div id="identificador_3">El siguiente número es la muestra de una variable fuera de alcance:</div> <script> var global = 900; unafuncion(); otrafuncion(); funciontres(); function unafuncion(){ document.getElementById("identificador_1").innerHTML += global; } function otrafuncion(){ var local_de_dos = 500; document.getElementById("identificador_2").innerHTML += local_de_dos; } function funciontres(){ document.getElementById("identificador_3").innerHTML += local_de_dos; } </script> |
En el ejemplo anterior, vemos que el scope de “global” es… global. El script indica que “unafuncion()” va a modificar el contenido de la etiqueta con id “identificador_1” y se despliegue en él el valor de “global”. Mientras que en “otrafuncion()” cambiamos el contenido de una etiqueta con id “identificador_2” para mostrar una variable local de esta función. Por último, en “funciontres()” se está intentando mostrar la variable local de “otrafuncion()”, pero como está fuera del alcance de “funciontres()” ésta no despliega valor alguno.
Al igual que en otros lenguajes de programación, en Javascript, el tiempo de vida de una variable inicia en el momento en el que ésta se declara.
Una variable global deja de existir hasta que la página es cerrada
Las variables locales son eliminadas cuando la función ha finalizado, lo cual permite usar identificadores iguales pero en funciones diferentes. Esto mismo ocasiona que, si se intenta asignar o desplegar el valor de una variable dentro de una función fuera de su alcance, se obtendrán resultados inesperados.
Las variables que funcionan como argumentos de las funciones son consideradas como locales también.
Como podemos apreciar, es importante conocer acerca de los alcances de las variables, ya que algunas veces pueden presentarse casos en los cuales nuestro código no funciona de la manera que nosotros queremos, y puede ser debido al alcance de las variables.