Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/07/2015, 11:52
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 6 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