JavaScript 08 - Funciones 2
JavaScript 08 - Funciones 2
Conceptos avanzados
Índice
Respecto al ámbito
Paso por valor y por referencia
El objeto Function
Array de argumentos
Parámetros
Valores de parámetros por defecto
Número de parámetros variable
Recursividad
Ejercicios
ALBERT BASSONS 2
Introducción
• En estas transparencias hablaremos de
algunos conceptos más avanzados que
tienen que ver con las funciones.
ALBERT BASSONS 3
Respecto al ámbito
• Como ya sabemos, las variables solamente existen dentro de
su ámbito. Existen dos motivos fundamentales por los que se
limita el alcance de las variables:
ALBERT BASSONS 4
Respecto al ámbito
• El uso de variables globales solamente se debe realizar en
casos que lo requieran. El uso indiscriminado de variables
globales consume más memoria y provoca errores de
programación.
ALBERT BASSONS 5
Respecto al ámbito
• Siempre hay que crear las variables lo más locales
posible. De hecho, por ese motivo la nueva versión de
ECMAScript (ES6) ya incluye el ámbito de bloque que no
tenía JavaScript (que es más localizado que el ámbito local).
ALBERT BASSONS 6
Respecto al ámbito
ALBERT BASSONS 7
Paso por valor o referencia
ALBERT BASSONS 8
Paso por valor o referencia
ALBERT BASSONS 9
Paso por valor o referencia
• Y la respuesta es…
Depende.
¿De qué depende?
De según como se pase la variable todo depende.
ALBERT BASSONS 10
Paso por valor
ALBERT BASSONS 11
Paso por referencia
ALBERT BASSONS 12
Paso por valor o referencia
ALBERT BASSONS 13
Paso por valor en JS
• En JS, cuando pasamos una variable de tipo básico (number,
boolean, string) a una función, si en ella modificamos su
valor, la variable original no cambia. Se ha realizado un paso
por valor.
101
Respuesta: 1
ALBERT BASSONS 14
Paso por referencia en JS
• En JS, cuando pasamos objetos (Object o array), modificar
ese objeto en la función implica modificar el objeto original. Se
realiza un paso por referencia, pasando la posición en
memoria donde se encuentra el objeto original.
Respuesta:
[101, 102, 103, 104]
ALBERT BASSONS 15
Paso por valor o referencia
ALBERT BASSONS 16
Ejemplo
ALBERT BASSONS 17
El objeto Function
• A pesar de que aún no hemos visto objetos en JavaScript,
mencionaré que las funciones también pueden ser vistas como
objetos.
ALBERT BASSONS 18
Ejemplo
ALBERT BASSONS 19
Array de argumentos
• Sabemos que las funciones reciben parámetros o argumentos
para poder realizar su trabajo.
ALBERT BASSONS 20
Ejemplo
ALBERT BASSONS 21
Parámetros
ALBERT BASSONS 22
Parámetros
• Por ejemplo, en JavaScript ocurre que:
ALBERT BASSONS 23
Ejemplo
ALBERT BASSONS 24
Valores por defecto
• Acabamos de ver que si no indicamos el valor para un
parámetro, éste tomará como valor por defecto undefined.
ALBERT BASSONS 25
Valores por defecto
• Además, a diferencia de PHP (versión 5), podemos indicar
valores por defecto para los primeros parámetros y no para los
últimos (cuidado que el orden no se puede alterar). Los que no
tengan valor por defecto serán undefined.
ALBERT BASSONS 26
Número de parámetros variable
• Y aún hay más… se permite el número de parámetros
variable, es decir que podemos tomar todos los parámetros que
nos pasen aún sin estar indicados en el prototipo de la función.
ALBERT BASSONS 27
Recursividad
• Sabemos que una función puede llamar a otra función pero...
¿puede llamarse a sí misma?.
ALBERT BASSONS 28
Ejemplo
ALBERT BASSONS 29
Recursividad
• La recursividad puede ser múltiple o simple.
ALBERT BASSONS 30
Ejemplo
ALBERT BASSONS 31