Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Pase de parametros tipo array en función javascript

Estas en el tema de Pase de parametros tipo array en función javascript en el foro de Javascript en Foros del Web. Buenos días colegas, estoy teniendo un problema con una función javascritp que espero me puedan ayudar. Estoy intentando ponerle un valor por defecto tipo array ...
  #1 (permalink)  
Antiguo 01/04/2013, 08:10
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 11 años, 10 meses
Puntos: 6
Pase de parametros tipo array en función javascript

Buenos días colegas, estoy teniendo un problema con una función javascritp que espero me puedan ayudar.

Estoy intentando ponerle un valor por defecto tipo array a un parametro que recibe una función. de esta manera:

Código:
function enviar(modulo, accion, formato, vista, param=Array()){
//mi codigo
}
La cuestión es que eso en Firefox funciona, pero en internet explorer y en google chrome no, y cuando abro las consolas me dan un error justo en ese parametro "param".

Tambien intenté hacerlo así con el new y nada:
Código:
function enviar(modulo, accion, formato, vista, param= new Array()){
//mi codigo
}

Sé que eso se traduce en: Si param tiene valor, hazlo un arreglo, y si no, ignoralo totalmente osea pasale null.

Hice esta prueba
Código:
function enviar(modulo, accion, formato, vista, param){
param = new Array();
//mi codigo
}
Pero no realiza lo que quiero hacer, osea que de esa manera no me da error pero no me sirve igual porque el parámetro que recibe no es un arreglo.

Alguna idea? de qué pueda estar mal?

Muchas gracias
  #2 (permalink)  
Antiguo 01/04/2013, 08:26
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pase de parametros tipo array en función javascript

No es un estándar de JS usar variables predefinidas, deberías comprobar si está definida o no antes de asignarle un valor.

Código Javascript:
Ver original
  1. function A(a, array){
  2. array = (typeof array != "undefined")? array : new Array();
  3. }

Ergo si array si no es indefinida será el valor de array mismamente y si no, será un array vacío.

Recuerda que en tiempo de ejecución, al leer de izquierda a derecha el intérprete, no habrá reescritura de la variable array, por lo que el valor de array dentro de la expresión (typeof array != "undefined")? array es aún el del argumento. Array no tendrá un nuevo valor hasta que no finalice la sentencia, justo en ;.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #3 (permalink)  
Antiguo 01/04/2013, 08:29
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Pase de parametros tipo array en función javascript

Yo utilizo desde hace bastante tiempo:
Código Javascript:
Ver original
  1. function enviar(modulo, accion, formato, vista, param){
  2.     param=param || [];
  3.     //blablabla
  4. }
  #4 (permalink)  
Antiguo 01/04/2013, 08:33
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 11 años, 10 meses
Puntos: 6
Respuesta: Pase de parametros tipo array en función javascript

He intentado esto que me dices y no funciona,, no me da error, pero no realiza lo que quiero. Igual gracias por responder
  #5 (permalink)  
Antiguo 01/04/2013, 08:35
 
Fecha de Ingreso: junio-2012
Ubicación: Venezuela
Mensajes: 68
Antigüedad: 11 años, 10 meses
Puntos: 6
Respuesta: Pase de parametros tipo array en función javascript

Cita:
Iniciado por marlanga Ver Mensaje
Yo utilizo desde hace bastante tiempo:
Código Javascript:
Ver original
  1. function enviar(modulo, accion, formato, vista, param){
  2.     param=param || [];
  3.     //blablabla
  4. }

Excelente, captaste mi idea, funciona perfectamente de esa manera, Gracias
  #6 (permalink)  
Antiguo 01/04/2013, 08:36
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Pase de parametros tipo array en función javascript

Acabo de recordar que hay otra formas aún más rápida de hacer lo mismo que puse antes:

Código Javascript:
Ver original
  1. function enviar(modulo, accion, formato, vista, param){
  2.     param || (param=[]);
  3.     //blablabla
  4. }

Así la asignación sólo se produce cuando debe.
  #7 (permalink)  
Antiguo 01/04/2013, 22:16
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Pase de parametros tipo array en función javascript

Un aviso a MagoMarlon, casi no me doy cuenta, que la alternativa de marlanga tiene un punto flaco, no se puede usar en tipos boleanos.

Realmente el código comprueba y devuelve cuál es true, o verdadero, de los dos. En javascript muchas expresiones pueden devolver true si se evalúan. Por ejemplo, si construimos una cadena y verificamos.

Código Javascript:
Ver original
  1. str= "cadena";
  2. var = str || false; // var será str

Pero, como es evidente, al verificar boleanamente, significa que el valor no puede ser boleano porque reescribiría la comprobación. Esto sería inválido si el argumento fuera false.

Código Javascript:
Ver original
  1. function A(a){
  2. a = a || true;
  3. return a;
  4. }
  5.  
  6. A(false); //devolverá true

En fin, un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #8 (permalink)  
Antiguo 02/04/2013, 02:48
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 3 meses
Puntos: 206
Respuesta: Pase de parametros tipo array en función javascript

Para booleanos sólo hay que pensar un poco

False por defecto:
Código Javascript:
Ver original
  1. function mifuncion(booleano)
  2. {
  3.     booleano=!!booleano;
  4. }

Incluso se puede usar directamente
Código Javascript:
Ver original
  1. function mifuncion(booleano)
  2. {
  3.     if (booleano) //blablabla
  4.     else //bleble
  5. }

Para el True por defecto, lo más rápido es cambiar la lógica de los condicionales y seguir teniendo el false por defecto
Código Javascript:
Ver original
  1. function mifuncion(booleano)
  2. {
  3.     if (!booleano) //blablabla
  4.     else //bleble
  5. }

O si no, utilizar el typeof como pusiste antes.

Última edición por marlanga; 02/04/2013 a las 03:01

Etiquetas: funcion, funciones, parametros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:16.