15 - Funciones que retornan un valor
Son comunes los casos donde una función, luego de hacer un proceso, retorne un valor.
Ejemplo 1: Confeccionar una función que reciba un valor entero comprendido entre 1 y 5. Luego retornar en castellano el valor recibido.
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
function convertirCastellano(x)
{
if (x==1)
return "uno";
else
if (x==2)
return "dos";
else
if (x==3)
return "tres";
else
if (x==4)
return "cuatro";
else
if (x==5)
return "cinco";
else
return "valor incorrecto";
}
var valor;
valor=prompt("Ingrese un valor entre 1 y 5","");
valor=parseInt(valor);
var r;
r=convertirCastellano(valor);
document.write(r);
</script>
</body>
</html>
Podemos ver que el valor retornado por una función lo indicamos por medio de la palabra clave return. Cuando se llama a la función, debemos asignar el nombre de la función a una variable, ya que la misma retorna un valor.
Una función puede tener varios parámetros, pero sólo puede retornar un único valor.
La estructura condicional if de este ejemplo puede ser remplazada por la instrucción switch, la función queda codificada de la siguiente manera:
function convertirCastellano(x) { switch (x) { case 1:return "uno"; case 2:return "dos"; case 3:return "tres"; case 4:return "cuatro"; case 5:return "cinco"; default:return "valor incorrecto"; } }
Esta es una forma más elegante que una serie de if anidados. La instrucción switch analiza el contenido de la variable x con respecto al valor de cada caso. En la situación de ser igual, ejecuta el bloque seguido de los 2 puntos hasta que encuentra la instrucción return o break.
Ejemplo 2: Confeccionar una función que reciba una fecha con el formato de día, mes y año y retorne un string con un formato similar a: «Hoy es 27 de enero de 2020».
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de JavaScript</title>
<meta charset="UTF-8">
</head>
<body>
<script>
function formatearFecha(dia,mes,año)
{
var s='Hoy es '+dia+' de ';
switch (mes) {
case 1:s=s+'enero ';
break;
case 2:s=s+'febrero ';
break;
case 3:s=s+'marzo ';
break;
case 4:s=s+'abril ';
break;
case 5:s=s+'mayo ';
break;
case 6:s=s+'junio ';
break;
case 7:s=s+'julio ';
break;
case 8:s=s+'agosto ';
break;
case 9:s=s+'septiembre ';
break;
case 10:s=s+'octubre ';
break;
case 11:s=s+'noviembre ';
break;
case 12:s=s+'diciembre ';
break;
} //fin del switch
s=s+'de '+año;
return s;
}
document.write(formatearFecha(27,1,2020));
</script>
</body>
</html>
Analicemos un poco la función formatearFecha. Llegan tres parámetros con el día, mes y año.
Definimos e inicializamos una variable con:
var s='Hoy es '+dia+' de ';
Luego le concatenamos o sumamos el mes:
s=s+'enero ';
Esto, si el parámetro mes tiene un uno. Observemos como acumulamos lo que tiene ‘s’ más el string ‘enero ‘. En caso de hacer s=’enero ‘ perderíamos el valor previo que tenía la variable s.
Por último concatenamos el año:
s=s+'de '+año;
Cuando se llama a la función directamente, al valor devuelto se lo enviamos a la función write del objeto document. Esto último lo podemos hacer en dos pasos:
var fec= formatearFecha(27,1,2020); document.write(fec);
Guardamos en la variable ‘fec’ el string devuelto por la función.