Una sinfonía en C#

Un pequeño aporte a la comunidad de habla hispana.

Javascript Hoisting, scope de variables

Una característica de Javascript difícil de comprender (sobre todo comprender si es un bug o un feature) es el scope de las variables declaradas dentro de una función.

El intérprete de Javascript mueve las declaraciones al principio de la función.

Esto quiere decir que si yo declaro una variable por la mitad del código de una función su declaración (no la asignación) se mueve al principio, veamos un ejemplo:

var a = 'hola';

function saludar() {
	console.log(a);
	var a = 'chau';
	console.log(a);
};

saludar();

image

En este caso esperamos que le primer mensaje en imprimirse diga “hola” sin embargo dice “undefined” ¿por qué? simple: para el interprete la declaración está al principio de la función, es decir, que lo que en realidad se ejecuta es esto:

var a = 'hola';

function saludar() {
	var a;
	console.log(a);
	a = 'chau';
	console.log(a);
};

saludar();

En definitiva lo importante es tener en cuenta este comportamiento o poner todas las declaraciones al principio.

Nos leemos. Leonardo.

Loading