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 originalvar foo = 1;
function bar(){
foo = 2;
return foo;
}
alert(bar());
O esto:
Código Javascript
:
Ver originalfoo = 1;
function bar(){
foo = 2;
return foo;
}
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 originalfunction bar(){
foo = 1;
return foo;
}
bar();
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 originalfunction bar(){
var foo = 1;
return foo;
}
bar();
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 originalUncaught ReferenceError: foo is not defined
Más información
Saludos