forked from mouredev/hello-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path16-functions.js
More file actions
157 lines (119 loc) · 3.74 KB
/
16-functions.js
File metadata and controls
157 lines (119 loc) · 3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/*
Clase 31 - Funciones
*/
// Funciones
// Las funciones son bloques de código que se pueden ejecutar
// en cualquier momento y desde cualquier lugar del código
// JavaScript.
// Las funciones pueden recibir parámetros y devolver valores.
// Simple
// Las funciones se declaran con la palabra reservada function
function myFunc() {
// Declaración
console.log("¡Hola, función!"); // Cuerpo
}
for (let i = 0; i < 5; i++) {
myFunc(); // Llamada
}
// Con parámetros
// Los parámetros son valores que se pasan a la función
// para que los utilice en su ejecución
function myFuncWithParams(name) {
console.log(`¡Hola, ${name}!`);
}
myFuncWithParams("Juan");
myFuncWithParams("jaf");
myFuncWithParams("Antonio");
// Funciones anónimas
// Las funciones anónimas no tienen nombre y se asignan a una variable
// Se utilizan para pasarlas como parámetros a otras funciones
const myFunc2 = function (name) {
console.log(`¡Hola, ${name}!`);
};
myFunc2("Juan Antonio");
// Arrow functions, funciones flecha
// Las arrow functions son una forma más corta de declarar funciones
// y se utilizan mucho en JavaScript moderno
// El formato es: (parámetros) => {cuerpo}
// Si el cuerpo de la función es una sola línea, se puede omitir las llaves
// y el return
const myFunc3 = (name) => {
console.log(`¡Hola, ${name}!`);
};
const myFunc4 = (name) => console.log(`¡Hola, ${name}!`); // Una sola línea
myFunc3("Juan Antonio");
myFunc4("Juan Antonio");
// Parámetros
// Los parámetros de una función son los valores que recibe
// para realizar su tarea
// Los parámetros pueden tener un valor por defecto
// Los parámetros pueden ser opcionales
function sum(a, b) {
console.log(a + b);
}
const sumaflecha = (a, b) => console.log(a + b);
sum(5, 10); // 15
sum(5); // NaN (Not a Number)
sum(); // NaN (Not a Number)
function defaultSum(a = 0, b = 0) {
console.log(a + b); // 0 + 0 = 0
}
// Por defecto
defaultSum(); // 0
defaultSum(5); // 5 + 0 = 5
defaultSum(5, 10); // 5 + 10 = 15
// defaultSum((b = 5)); // NaN
// Retorno de valores
// Las funciones pueden devolver un valor con la palabra reservada return
// Si no se especifica un valor de retorno, la función devuelve undefined
function mult(a, b) {
return a * b;
}
let result = mult(5, 10);
console.log(result); // 50
// Funciones anidadas
// Las funciones pueden estar dentro de otras funciones
// Las funciones internas no pueden ser llamadas desde fuera de la función
// en la que están declaradas
function extern() {
console.log("Función externa");
function intern() {
console.log("Función interna");
}
intern();
}
extern(); // Función externa
// intern() Error: fuera del scope (alcance) de la función
// Funciones de orden superior
// Las funciones de orden superior son funciones que reciben
// otras funciones como parámetros
// Se utilizan para abstraer la lógica de la función principal
function applyFunc(func, param) {
func(param);
}
applyFunc(myFunc4, "función de orden superior"); // ¡Hola, función de orden superior!
// forEach en arrays
// forEach es un método de los arrays que recorre todos los elementos
// del array y ejecuta una función por cada uno de ellos
let myArray = [1, 2, 3, 4]; // Array
let mySet = new Set([
// Set
"Juan",
"Antonio",
"jaf",
37,
true,
]);
let myMap = new Map([
// Map
["name", "Juan"],
["age", 37],
]);
myArray.forEach(function (value) {
console.log(value); // 1, 2, 3, 4
});
myArray.forEach((value) => console.log(value)); // 1, 2, 3, 4