Autor Tema: JavaScript aparece undefined al usar una variable error hoisting o izar CU01190E  (Leído 3056 veces)

bermartinv

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 298
    • Ver Perfil
Hola chicos, paso a poner mis soluciones a este tema (CU01190E del curso de programador web JavaScript básico).

Sobre hoisting, decir que , como norma deberiamos declarar siempre todas las variables que vamos a utilizar en una función al principio de este. Y decir, que aunque no sabía que se llama hoisting, esto lo hacemos todos sin darno cuenta, por ejemplo cuando declaramos una sentencia for y creamos una variable como contador.

Código: [Seleccionar]
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<script type="text/javascript">

var x = 'Hola amigos'; // variable global

function ejemplo(){
 alert( x ); // esperamos el valor global
 var x;
 x = 'Saludos desde Costa Rica'; // redefinimos la variable en contexto local
 alert( x );  // esperamos el nuevo valor local
}

</script></head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemplo()"> Probar </div>
</body></html>


Citar
a) Realiza una prueba pulsando en “Probar”. ¿Qué resultados obtienes? ¿Cómo se explican esos resultados?

Nos aparece dos alert:

1.En el primero, sale undefined

2.En el segundo, 'Saludos desde Costa Rica'

En el primero sale undefined porque se ha hecho hoisted ('Cuando se declara una variable en un punto intermedio del código, dicha declaración es “elevada” (hoisted) a la parte inicial del código en el ámbito donde se encuentra dicha variable'), esto es , se ha redefinido la variable x y no se le dado ningún valor, se ha elevado a la parte inicial de nuestra función, pero no se le ha asignado ningún valor, por eso , nos sale undefined.


Citar
b) Cambia el código y declara la variable x dentro de la función al mismo tiempo que la inicializas. ¿Qué resultados obtienes? ¿Cómo se explican esos resultados?

Al asignar un valor a la variable x, obtenemos el mismo resultado que el anterior 'undefined' porque esta definición está situada después del 'alert(x)'.


Citar
c) De los dos casos anteriores ( a y b ). ¿En cuáles se produce hoisting: en el a), en el b) ó en ambos?

Se produce hoisting en los dos casos.


Citar
d) En este caso, ¿el hoisting está afectando a los resultados obtenidos? ¿Por qué? ¿Cuáles serían los resultados de ejecutar estos códigos si no existiera hoisting?

Si. Como hemos dicho anteriormente existe hoisting y se eleva la declaración de la variable a la parte inicial del código en el ámbito de la función. Si no se produjera hoisting nada más ejecutar la función su resultado sería mostrar un alert con 'Hola amigos'.

Saludos!!!!
« Última modificación: 04 de Abril 2016, 13:17 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Ejercicio 1a bien

1b no sé el código que has usado porque no lo has puesto

Si usamos este código que pongo a continuación obtenemos "Hola amigos" y "Saludos desde Costa Rica" y no habría hoisting

Código: [Seleccionar]
<!DOCTYPE html>

<html><head><title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">

<script type="text/javascript">
function ejemplo(){
var x = 'Hola amigos';
alert( x );
x = 'Saludos desde Costa Rica'; // redefinimos la variable en contexto local
alert( x );  // esperamos el nuevo valor local
}

</script></head>

<body><div id="cabecera"><h2>Cursos aprenderaprogramar.com</h2><h3>Ejemplos JavaScript</h3></div>
<div style="color:blue;" id ="pulsador" onclick="ejemplo()"> Probar </div>
</body></html>

1d bien

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".