Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/03/2012, 02:02
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Esta funcion retorna un resultado correcto pero al guardar es undefined

la solución que implementas es practicamente lo mismo. pero de igual forma parece que no haz entendido lo que quise señalar. te muestro una imagen de más o menos el flujo de tu código inicial. esta compuesta por tres columnas: inicio, ciclo 1 y ciclo 2. el código representa una versión bien reducida de lo que tenías. el texto en rojo es la porción de código que se interpreta en ese ciclo, el texto en verde es el valor que devuelve el ciclo, y la línea que conecta las diferentes secciones es el punto en que activa las distintas secciones. como podrás analizar, en el ciclo 1 se asume que la condición es cierta y por tanto vuelve a invocar la misma función. en el ciclo 2 se asume que la condición evalua a falso y por tanto devuelve un valor. nótese particularmente en el ciclo 1 cuando recibe el valor de ciclo 2, este no hace ninguna operación adicional con el valor recibido. por tanto, ciclo 1 continua la interpretación saltando else y finaliza porque no hay más instrucciones. como la función no devuelve explicitamente un valor, automáticamente devuelve undefined al proceso que lo invocó. lo que te quise explicar antes fue que tenías que devolver ese valor que (en este ejemplo hipotético) ciclo 1 recibe de ciclo 2. es decir, ubicarle un return de esa invocación: return fn().

NOTA 1: ahora no vayas a cambiar el código actual, porque tal como lo tienes es practicamente lo mismo a lo que te quise decir. aunque, deberías hacer la variable nuevo_id local.

NOTA 2: puede que la imagen se vea pequeña, pero si abres la imagen en una pestaña sola lo verás en tamaño normal.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.