Foros del Web » Programando para Internet » Javascript »

Duda básica de JS sobre variables

Estas en el tema de Duda básica de JS sobre variables en el foro de Javascript en Foros del Web. Buenos días, tengo unas dudas muy básica sobre variables, recién empecé un curso de programación web con JavaScript. A ver si ustedes pueden ayudarme... 1. ...
  #1 (permalink)  
Antiguo 18/07/2015, 05:17
 
Fecha de Ingreso: julio-2015
Mensajes: 7
Antigüedad: 8 años, 9 meses
Puntos: 0
Duda básica de JS sobre variables

Buenos días,

tengo unas dudas muy básica sobre variables, recién empecé un curso de programación web con JavaScript. A ver si ustedes pueden ayudarme...

1. ¿Si escribo una variable así "var i" en lugar de escribir "i" eso indica que es una variable global?

2. ¿Estas variables globales entonces si las uso en funciones afectarían a todo el código de mi script?

3. Y entonces ¿son variables diferentes si yo escribo "var i=0" y además "i=prompt(...)"?

Tengo un poco de lío la verdad y me resulta muy complejo continuar sin aclarar la base :)

Gracias de antemano.

P
  #2 (permalink)  
Antiguo 18/07/2015, 07:29
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Duda básica de JS sobre variables

Bueno, depende. El keyword var declara la variable en el scope en el cual se está ejecutando la sentencia. Como sabes, en JS las funciones tienen su propio ámbito de variables o scope, por lo tanto, las variables que se se declaran dentro de una función quedan locales y solo se pueden acceder desde esa función o en scopes inferiores (ej. una función dentro de otra), pero nunca superiores.

Código Javascript:
Ver original
  1. (function(x){
  2.   (function(){
  3.     alert(x); // 123
  4.   }());
  5. }(123));
  6.  
  7. (function(x){
  8.   (function(x){
  9.     alert(x); // 456
  10.   }(456));
  11. }(123));

Cuando no utilizas dicha palabra, JS entiende que ya ha sido declarada anteriormente y por ello va ascendiendo por el scope chain hasta encontrar el primer resultado. Si no encuentra ninguna referencia, la define como propiedad del objeto global.

Código Javascript:
Ver original
  1. (function(x){
  2.   x = 1; // Nótese que x ya está declarada en la función aunque no se le haya pasado ningún valor
  3.   alert(x); // 1
  4. })();
  5.  
  6. alert(window.x); // undefined
  7.  
  8. (function(){
  9.   x = 1;
  10. })();
  11.  
  12. alert(window.x); // 1

Creo que con eso se puede deducir lo que preguntas.

Última edición por PHPeros; 18/07/2015 a las 08:05
  #3 (permalink)  
Antiguo 18/07/2015, 11:26
 
Fecha de Ingreso: julio-2015
Mensajes: 7
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Duda básica de JS sobre variables

Gracias por tu explicación, voy a revisarlo bien, pero me sigue costando mucho entenderlo. Un saludo y gracias.
  #4 (permalink)  
Antiguo 18/07/2015, 11:52
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Duda básica de JS sobre variables

Bienvenido a FDW.

Si defines a una variable fuera de una función, ya sea utilizando la palabra var o sin ella, su ámbito será global, es decir, si hago esto:

Código Javascript:
Ver original
  1. var foo = 1;
  2.  
  3. function bar(){
  4.     foo = 2;
  5.     return foo;
  6. }
  7.  
  8. alert(bar());

O esto:

Código Javascript:
Ver original
  1. foo = 1;
  2.  
  3. function bar(){
  4.     foo = 2;
  5.     return foo;
  6. }
  7.  
  8. alert(bar());

El resultado será 2.

La situación cambia cuando la declaración se realiza dentro de la función.

Código Javascript:
Ver original
  1. function bar(){
  2.     foo = 1;
  3.     return foo;
  4. }
  5.  
  6. bar();
  7. alert(foo);

Lo anterior muestra 1 en el mensaje de alerta pues foo tiene un ámbito global ya que, si bien fue declarada dentro de la función, no se utilizó la palabra var para hacerlo, por lo cual no se limitó su alcance.

Ahora, si la declaramos con var, las cosas cambian un poco:

Código Javascript:
Ver original
  1. function bar(){
  2.     var foo = 1;
  3.     return foo;
  4. }
  5.  
  6. bar();
  7. alert(foo);

Lo anterior no se logra ejecutar puesto que el ámbito de foo no es global ya que fue declarada usando var dentro de la función, por lo cual pasa a ser una variable local o privada en la función. Si te fijas en la consola del navegador (pulsa la tecla F12 y selecciona "Console"), verás el siguiente mensaje:

Código Consola del navegador:
Ver original
  1. Uncaught ReferenceError: foo is not defined

Más información

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: funcion, js, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:18.