He declarado var ejemplo al principio (¿debería estar en el ámbito global, o?!). ¿Por qué no está definido después de llamar a la función?
var example; function test(){ var x = 2; var y = 5; var example = x + y; console.log(example); // 7: works OK after calling the function }; test(); console.log(example); // undefined ?!Editar: Hola, gracias por sus respuestas, encontré un artículo sobre esto - Sombreado variable
La razón es que ha inicializado la variable dos veces. Primero Inicialización fuera del bloque de funciones que está disponible globalmente, Segundo dentro del bloque de funciones que está específicamente disponible para el bloque de funciones.
Su segunda inicialización anulará la primera dentro de la función. Después de la ejecución de la función, la segunda variable de ejemplo ya no estará disponible y hará referencia a la primera variable de ejemplo declarada globalmente.
var example; function test(){ var x = 2; var y = 5; example = x + y; console.log(example); //Prints the value }; test(); console.log(example); // Prints the valueel primer console.log (ejemplo) está ejecutando el ejemplo dentro del bloque de funciones, por lo que imprimirá el valor del comando que diste.
el segundo console.log (ejemplo) está ejecutando el ejemplo que declara en la primera línea que no tiene valor, por lo que se imprimirá sin definir.