Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/07/2015, 07:29
PHPeros
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 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