2011-11-09 7 views

Respuesta

18

Básicamente, vardeclara 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.

+0

También existe una diferencia fuera de una función. Puedes hacer esto obj.prop, no puedes hacer var obj.prop! –

+0

@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

1

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.

5

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

+0

@pst: ¿Qué quieres decir? – Ryan

+0

El idioma actualizado es mucho mejor :) –

+0

@pst: Bueno, yo iba a decirles de todos modos: "Edité unos 3 segundos después de publicar, lo siento :)" pero luego pensé que querías decir http://jsfiddle.net/minitech/sEkYt/ – Ryan

Cuestiones relacionadas