Alcance de Variables (var scope)
En javascript las variables son inicializadas con undefined, pero ante una segunda declaracion no se inicializan nuevamente, si bien javascript nos permite declarar dos veces la misma variable, no es recomendable hacerlo. Pero si declaramos dos o mas veces la misma variable, a partir de la segunda declaración que lee el interpretador comprueba que ya esté declarada y no le modifica su valor ha no ser que esté implicito.
Las variables en javascript, como en otros lenguajes, poseen un alcance al momento de su declaración indicando donde la puedo utilizar, pero a diferencia de otros lenguajes, en javascript el alcance es por función y no tenemos un alcance de variable por bloque (block-scope), como podría ser un if, for, while, etc. En estos casos la variable sigue teniendo un alcance a su función. Por ejemplo:
En el ejemplo anterior declaramos una variable adentro de un if y la leemos luego por fuera. En otros lenguajes ni siquiera compila devolviendo un mensaje de error como “unaVar no está declarada” en la linea 4.
Esto demuestra que javascript no tiene un alcance de variable a nivel de bloque. Pero como es que funciona entonces?: simple, el interpretador alza la declaracion de la variable hasta el principio de la función, de esta manera la tendremos declarada al alcance de toda la función.
Usando el ejemplo anterior, será interpretado de la siguiente manera:
Dicho esto, los siguientes ejemplos funcionan de la misma manera sin afectar rendimiento, ni uso de memoria:
Continúa en Parte 2: funciones