Duplicar posible:
Difference between using var and not using var in JavaScript¿Qué hace "var" en JavaScript? ¿Por qué a veces es parte de una tarea?
var foo = 1;
foo = 1;
¿Cuál es la diferencia entre dos líneas más arriba?
Duplicar posible:
Difference between using var and not using var in JavaScript¿Qué hace "var" en JavaScript? ¿Por qué a veces es parte de una tarea?
var foo = 1;
foo = 1;
¿Cuál es la diferencia entre dos líneas más arriba?
Básicamente, var
declara variable y también se le puede asignar al mismo tiempo.
Sin var
, se asigna a la variable. La asignación asignará a una variable existente o creará una variable global de ese nombre y luego le asignará.
Fuera de las funciones, eso significa que no hay una diferencia real (en principio) si la variable aún no existe. Ambos crean la variable global foo
en ese caso.
Dentro de una función, hay una gran diferencia. El primero crea una variable local para la función independientemente de si existe o no en otro lugar.
El segundo creará una variable global si no existe, o simplemente cambiará el valor si existe.
Para mantener el código lo más modular posible, debe siempre usar var
a menos que desee cambiar las variables globales existentes. Eso significa declarar todos los globales fuera de las funciones con var
y declarar todos los locales con var
.
También existe una diferencia fuera de una función. Puedes hacer esto obj.prop, no puedes hacer var obj.prop! –
@Chintan, eso probablemente tiene más que ver con el hecho de que 'obj.prop' no puede ser una nueva variable, sino que es una propiedad de una variable' obj' existente. – paxdiablo
En el primer caso, foo estará disponible en el mismo ámbito en el que está definido, es decir, será una variable local. En el segundo caso foo es una variable global, ubicada en el ámbito global.
foo = 1
pondrá foo
en el último ámbito donde se definió foo
, o el alcance global. var foo = 1
pondrá la variable en el alcance actual (es decir, la función actual).
¿Qué tutorial/libro de JavaScript estás usando? (Este es un tema bastante fundamental ...) –