Autor Tema: JavaScript no funciona la variable sale undefined Elevacion o hoisting CU01190E  (Leído 3367 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas, ejercicio CU01190E del curso JavaScript desde cero.

A partir del siguiente código:

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?
El primer alert muestra 'undefined' y el segundo 'Saludos desde Costa Rica'. Esta linea 'var x;' dentro de la función lo que hace es que sobreescribe la variable global 'x', así que al no darle ningún valor a x, toma como valor '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?
Si la linea 'var x;' que se encuentra dentro de la función, la cambiamos por esta 'var x='Hola';'. Se siguen obteniendo los mismos resultados.Sigue dando 'undefined' porque el valor que le damos a x, se lo damos después del primer alert.

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

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. Porque al existir el hosting, provoca que la variable x se sobreescriba nada mas empezar la función. Al ejecutar el código, si no existiera el hosting, se mostraría 'Hola amigos' y después 'Saludos desde Costa Rica'. Esto sucedería así porque el primer alert, mostraría el valor de la variable global x.

Saludos.
« Última modificación: 20 de Febrero 2016, 13:50 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
Re:Elevacion o hosting JavaScript. Ejercicio CU01190E
« Respuesta #1 en: 20 de Febrero 2016, 13:49 »
Hola!

Cuidado porque hosting es una cosa y hoisting otra y no tienen nada que ver :)

a) Aparentemente debería mostrarnos "Hola amigos". ¿Por qué no lo hace? Por la elevación o hoisting de variables que hace JavaScript explicada en el curso:

Debido a que JavaScript realiza el izado o elevación de las declaraciones de variables, el intérprete JavaScript ejecutará el código como si dicha declaración se encontrara en la primera línea de la función

b) El hoisting afecta sólo a la declaración de variables. Si hacemos una declaración-inicialización, se realiza el izado sólo de la declaración. Esto puede generar resultados aparentemente extraños.

c) En ambos

d) ok

Este ejercicio nos muestra lo peligroso que puede ser repetir nombres de variables. Una forma de solucionarlo, o al menos de intentarlo, es crear espacios de nombres, además de tener cuidado

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

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola, tienes razón.

Mi cerebro de momento está mas acostumbrado a hosting que a hoisting. Pero lo tendré en cuenta para que no se me olvide.

Gracias como siempre César.

 

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".