Hoisting

¿Qué se va a imprimir en consola?
var a = 10;
function ejemploHoist(){
	console.log(a);	
	var a=1337;
}
ejemploHoist();
		
Las declaraciones de funciones y de variables siempre son movidas (hoist) hasta el tope de su scope.

Lo cual significa que la función anterior, en realidad funciona de la siguiente manera:
function ejemploHoist(){
	var a; // a = undefined;
	console.log(a);	
	a=1337;
}
		
Código