Diferencia entre revisiones de «Programación en JavaScript/Funciones»

Contenido eliminado Contenido añadido
Raulbcneo (discusión | contribs.)
Raulbcneo (discusión | contribs.)
Línea 85:
== Devolución de datos ==
 
Como ya sabemos, una función puede devolver datos hacia afuera por medio de la expresión '''return'''. Naturalmente, podemos devolver cualquier tipo de datos. Sin embargo hay que tener en cuenta una serie de cuestiones:
 
* Siempre se devuelven objetos, como ya hemos visto, y por lo tanto podemos devolver un objeto creado en la misma función. Normalmente, cuando creamos una variable dentro de una función, esta variable existe sólo para esa función, y desaparece en el momento en que la función termina (la variable se encuentra en la pila de memoria, y cuando la función desaparece, también lo hace la pila); pero en el caso de que devolvamos el objeto, no se devuelve exactamente la misma variable, si no que se devuelve su contenido.
* Cuando devolvemos ''true'' ó un valor distinto que cero, para JavaScript es lo mismo, y si devolvemos ''false'' o 0, también viene a ser lo mismo. Esta es una regla estándar para muchos lenguajes como JavaScript, Java, PHP, Perl, etc...
* No es preciso que una función devuelva nada. No es necesario usar ''return''. Además, también es posible que en vez de devolver resultados, se modifiquen variables globales, es decir, variables creadas fuera de la función y que se usan dentro.
* Si queremos salir de una función antes de tiempo, porque algo ha fallado o no hay nada que hacer en un caso específico, podemos simplemente escribir "return;", lo que nos permitirá salir sin más y no devolver ningún valor.
 
Estas consideraciones son importantes a nivel general y es importante tenerlas en cuenta. Vamos a ver como funcionan con algunos ejemplos:
 
{{JavaScript/Reservada|function}} dev_variable()
{
{
variable = true;
{{JavaScript/Reservada|return}} variable;
}
}
{{JavaScript/Reservada|var}} var1 = dev_variable();
 
Como vemos, hemos declarado una variable local a la función y la hemos devuelto, pero solo se devuelve realmente el valor. Esto pasa en todos los casos (Nota técnica: cuando se devuelve un objeto, se devuelven sus datos en forma de objeto de esa clase; esto lo entenderemos mejor en el capítulo siguiente). Veamos este otro ejemplo:
 
{{JavaScript/Reservada|function}} dev_true() {
{{JavaScript/Reservada|return}} true;
{
}
return true;
}
{{JavaScript/Reservada|if}} (dev_true()) {
alert("es true");
{
}
alert("es true");
}
{{JavaScript/Reservada|if}} (true) {
alert("también es true");
{
}
alert("también es true");
}
{{JavaScript/Reservada|if}} (1)
if (1)
{
{
alert("este también es true");
}
}
 
Por último, veamos comocómo salir de una función sin necesidad de devolver nada en cualquier momento:
Como hemos enunciado antes, un valor true y un valor distinto de cero son siempre verdad. En el ultimo caso, no se ejecutará porque es cero, y por lo tanto, falso.
 
{{JavaScript/Reservada|function}} salir()
Por último, veamos como salir de una función sin necesidad de devolver nada en cualquier momento:
{
document.write("hola");
document.write("que pasa");
{{JavaScript/Reservada|return}};
alert("adiós");
}
salir();
 
En este ejemplo, la última linea dentro de la función ('''alert''') no se ejecutará nunca porque hemos salido sin más en la linea anterior al ejecutarse la instrucción '''return'''.
function salir()
{
document.write("hola");
document.write("que pasa");
return;
alert("adiós");
}
salir();
 
En este ejemplo, la última linea dentro de la función ('''alert''') no se ejecutará nunca porque hemos salido sin más en la linea anterior al ejecutarse la instrucción '''return'''.
 
== Funciones recursivas ==