Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Capitulo 3 Parte 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

Funciones

Como se ha reiterado en varias ocasiones, los métodos son el equivalente a


las funciones de la programación estructurada y en realidad son funciones, sólo
que están asociadas a una clase.

En consecuencia, para crear métodos es necesario saber crear funciones.


Por esa razón, en esta sección se hace un repaso de las diferentes formas en
que pueden ser creadas.

En JavaScript las funciones pueden ser creadas en al menos 3 formas:


funciones estándar, funciones anónimas y funciones flecha. Además, las
funciones anónimas y flecha, pueden ser inmediatamente invocadas (funciones
IIFE).

Las funciones estándar tienen esencialmente la misma estructura que las


funciones en C/C++, excepto que, en lugar del tipo de dato devuelto, se escribe
la palabra reservada function:

function nombre_de_la_función(lista_de_parámetros) {
Instrucciones JavaScript
...
return valor/expresión;
}

El nombre_de_la función, al ser un identificador, sigue las mismas reglas


que se aplican a los nombres de las variables.

Las instrucciones JavaScript son instrucciones válidas del lenguaje,


escritas una a continuación de otra y separadas con puntos y comas (;). Una
función puede tener entre 0 y cientos de instrucciones.

La instrucción de retorno: return, termina la ejecución de la función y


devuelve el valor o el resultado de la expresión. Esta instrucción es opcional y
puede estar ubicada en cualquier parte de la función, aunque generalmente se
ubica al final de la misma. Si en la función no se escribe la instrucción return, la
función termina cuando se ejecuta su última instrucción y no devuelve ningún
valor (el resultado es indefinido).

La lista_de_parámetros son los nombres de las variables (separadas con


comas) en las que la función recibe los datos que necesita. Al igual que en
C/C++, los parámetros, así como las variables declaradas dentro de la función,
son locales y temporales, es decir que sólo existen dentro de la función y dejan
de existir (son destruidas) cuando la función termina.
Por ejemplo, la siguiente instrucción crea la función estándar "sum2", que
recibe dos valores en las variables "x" y "y" y devuelve su suma:

function sum2(x, y) {
return x+y;
}

Una vez creada, la función puede ser llamada (empleada) simplemente


escribiendo su nombre (sum2) y entre paréntesis, los valores a sumar. Por
ejemplo, en las siguientes instrucciones, se emplea la función sum2, para
calcular la suma de 7 y 12, 5.76 y 9.32 y 54.3123 y 89.2443:

sum2(7, 12)
19
sum2(5.76, 9.32)
15.08
sum2(54.3123, 89.2443)
143.5566

Las funciones también pueden ser creadas como funciones anónimas:

var|const|let nombre_de_la_función = function(lista_de_parámetros) {


Instrucciones JavaScript
...
return valor/expresión;
};

Donde nombre_de_la_función es la variable en la cual se guarda la función.


Este tipo de funciones se denominan anónimas porque la función en sí no tiene
nombre, por eso es necesario guardarla en una variable. Como de costumbre,
se emplea "var" cuando se declaran variables en la calculadora (para poder
hacer correcciones en caso de error) y "const" (más frecuentemente que "let")
cuando se crea al interior de un módulo, librería o función.

El cuerpo de la función es el mismo que el de una función estándar, por lo


que sólo cambia la forma de declararla, así la función suma2, en forma de una
función anónima, es:

var sum2 = function(x, y) {


return x+y;
}

Y se llama y emplea igual que una función estándar, así para sumar 10 y 15,
se escribe:
sum2(10, 15)
25

Las funciones pueden ser creadas también como funciones flecha, de


acuerdo a la siguiente sintaxis:

var nombre_de_la_función = (lista_de_parámetros) => {


Instrucciones JavaScript
...
return valor/expresión;
};

Que es una forma parecida a las funciones anónimas, excepto que no se


emplea la palabra function y después de los parámetros se escribe una
flecha: =>. Esta es la forma más práctica cuando la función consta de una sola
expresión, pues en esos casos no se requieren ni las llaves, ni la instrucción de
retorno (return). Así, la función "sum2", con una función flecha se crea con la
siguiente instrucción:

var sum2 = (x, y) => x+y;

Y, por supuesto, se emplea igual que los otros tipos de funciones. Por
ejemplo, para calcular la suma de 12 y 23, se escribe:

sum2(12, 23)
35

Pero además, si la función recibe un sólo parámetro, no es necesario encerrar


ese parámetro entre paréntesis. Por ejemplo, para programar una función, que
devuelva el resultado de la siguiente expresión:

\sqrt[3] {{y+ 4! + y^{3.2}} \over {\text{e}^y + \cos(y)} }3ey+cos(y)y+4!+y3.2

Se escribe:

var fy = y => Math.cbrt((y+Math.factorial(4)+y**3.2)/(Math.exp(y)+Math.cos(y)));

Que es empleada (es llamada) como de costumbre, es decir escribiendo el


nombre de la función ("fy") y el valor requerido ("y") entre paréntesis, así el
resultado de la expresión, para y=3.1, se calcula con:

fy(3.1)
1.4487162948454166
Cuando es necesario crear una función, pero sólo es empleada una vez (algo
que no es muy raro en programación) no es necesario guardarla, sino que puede
ser creada y empleada (llamada) inmediatamente. Estas funciones se conocen
como IIFE: Immediately Invoked Function Expresiones (Expresiones Función
Invocadas Inmediatamente: funciones ifi).

Las IIFE pueden ser creadas tanto con las funciones anónimas como con las
funciones flecha de acuerdo al siguiente formato:

(function(lista_de_parámetros) {
// instrucciones JavaScript
return valor/expresión;
})(valores_con_los_que_se_llama_a_la_función);

((lista_de_parámetros) => {
// instrucciones JavaScript
return valor/expresión;
})(valores_con_los_que_se_llama_a_la_función);

O, alternativamente:

(function(lista_de_parámetros) {
// instrucciones JavaScript
return valor/expresión;
}(valores_con_los_que_se_llama_a_la_función));

((lista_de_parámetros) => {
// instrucciones JavaScript
return valor/expresión;
}(valores_con_los_que_se_llama_a_la_función));

Por ejemplo, si se quiere calcular la suma de los cubos de 1, 5 y 9, se puede


escribir la siguiente IIFE:

(function(x, y, z) {
return x**3+y**3+z**3;
})(1, 5, 9)
855

O también con:

((x, y, z) => x**3+y**3+z**3)(1, 5, 9)


855
La función se encierra entre paréntesis, ya sea solo la declaración (de
acuerdo al formato mostrado para la primera forma) o toda la función (de
acuerdo al formato mostrado para la segunda forma) para que JavaScript trate
a la función como una expresión y la ejecuta inmediatamente.

Cuando la expresión o problema a resolver requiere más de una instrucción,


que es el caso más frecuente, las instrucciones deben separarse con puntos y
comas y si se requieren variables adicionales, deben ser declaradas con const,
si no son modificadas o con let, si son modificadas (si su valor cambia o puede
ser cambiado dentro de la función). Por ejemplo para calcular el área de un
triángulo, de lados "a", "b" y "c", con la siguiente expresión:

\begin{aligned} \text{Area} &= \sqrt{s(s-a)(s-b)(s-c)}\\[0.3cm] donde : &\phantom{=}\\ s

Se debe calcular (y guardar) primero el valor de "s", luego con ese valor se
calcula el área del triángulo, es decir:

function areaTriangulo(a, b, c) {
const s = (a+b+c)/2;
return Math.sqrt(s*(s-a)*(s-b)*(s-c));
}

Como se puede ver la variable local s ha sido declarada como constante, que
es lo correcto en este caso, porque su valor, una vez calculado, no cambia.

Como de costumbre, para llamar a la función se escribe su nombre y entre


paréntesis los valores separados con comas, como ocurre en las siguientes
instrucciones:

areaTriangulo(10, 15, 12)


59.81168364124187
areaTriangulo(17, 14, 19)
114.89125293076057
areaTriangulo(20, 30, 40)
290.4737509655563

También podría gustarte