Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/12/2010, 02:55
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Declaracion de variables javascript

function faltan(fal){
...
}

Si fal es global luego no hace falta pasarla como parametro o el parametro no puede tener el nombre de una var global...

Cuidado

Cita:
Sé que una variable cuando es declarada fuera de una funcion es global, para que una variable sea global declarada dentro de una funcion, debe hacerse sin "var".
tienes un ligero error de concepto "var" es la forma de declarar variables sean globales o locales, pero no es obligatorio (pero recomendable). Otra forma de declarar variables es la definicion de parametros de entrada a una función, que pasan automaticamente a ser variables locales de la función.

cuando no pones "var" javascript mira si la variable existe, primero la busaca en el contexto en que este (local o global), si existe hace lo que les estes pidiendo (en tu caso fal = fal-1000; restar 1000 al valor de fal, podrias usar la notació fal-=1000; ) si la variable no existe la declara y despues hace lo que le pidas.

Tu error de concepto esta en que una variable globalmente declarada cuando la usas en un contexto local (funcion) no debes redeclararla con var puesto que machacarias la declaración global y con ello el valor que pueda tener la variable gobal.

No estas redeclarando con var pero estas declarando un parametro que para el caso es lo mismo...

Así

Código Javascript:
Ver original
  1. function faltan(fal){
  2.  fal = fal-1000;

fal en la funcion pasa a ser el parametro no la variable global puesto que al ejecutar la segunda linea sin var (como debe ser) javascript busca una variable llamada fal, primero la busaca en la función como encuentra un parametro llamado fal entiende que te refieres a el y no busca nada mas por tanto la variable global fal no entra en juego... o lo que es lo mismo estas modificando el valor del parametro no el de la variable global, luego la funcion faltan no tinen ningun problema en ejecutarse pero la otra funcion no se entera de los cambios...

Creo sin haber entrado a fondo en tu codigo que deberias hacer lo siguiente, quitar el parametro de la funcion faltan() y en la otra funcion substiuir la linea

Código Javascript:
Ver original
  1. faltan(180000);

por


Código Javascript:
Ver original
  1. fal=180000;
  2.       faltan();

de tal forma que das valor a la variable global y luego ejecutas la funcion faltan...

Quim

Última edición por quimfv; 15/12/2010 a las 03:39