Skip to content

Commit 477af18

Browse files
committed
update js default arguments
1 parent 25a7350 commit 477af18

2 files changed

Lines changed: 33 additions & 16 deletions

File tree

02-languages/02-apuntes/01-javascript/102 data structures.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
///-- OBJETOS ************************************************************************************
22

33
/*
4-
Datos estructurados siguiendo el formato clave-valor.
4+
Los objetos representan datos estructurados siguiendo el formato clave-valor.
55
A cada clave o alias lo llamamos propiedad.
66
*/
77

@@ -122,19 +122,36 @@ collection.forEach(function (item) {
122122

123123
// 2. for(...)
124124
for (let i = 0; i < collection.length; i++) {
125-
console.log(collection[i]); // "hey", "ho", "let's go", "yay", (x95) undefined, "oops!"
125+
console.log(collection[i]); // "hey", "ho", "let's go", "yay", "nice", empty x 95, "oops!"
126126
}
127127

128128
// 3. for..of (azúcar sintáctico para objetos iterables)
129129
for (const item of collection) {
130-
console.log(item); // "hey", "ho", "let's go", "yay", (x95) undefined, "oops!"
130+
console.log(item); // "hey", "ho", "let's go", "yay", "nice", empty x 95, "oops!"
131131
}
132132

133133
// Un string, por ejemplo, implementa el patrón iterable y puede ser recorrido con for..of
134134
for (const char of "javi") {
135135
console.log(char); // "j", "a", "v", "i"
136136
}
137137

138+
// Eliminado elementos de un array.
139+
140+
// Tenemos varias formas según entendamos que es para nosotros "eliminar".
141+
// Por un lado, contamos con un método de los arrays llamado pop para extraer el último elemento:
142+
collection.pop(); // returns "oops!"
143+
console.log(collection); // "hey", "ho", "let's go", "yay", "nice", empty x 95,
144+
145+
// También podemos asignar 'undefined' a cualquier índice como forma 'blanda' de borrado. Esto
146+
// sería más bien un 'reset' de esa posición, ya que la posición seguirá existiendo;
147+
collection[0] = undefined;
148+
console.log(collection); // undefined, "ho", "let's go", "yay", "nice", empty x 95,
149+
150+
// Aunque lo más recomendable, la forma real de borrar es usando 'splice', que devuelve la secuencia
151+
// borrada y muta el array:
152+
collection.splice(1, 2); // returns ["ho", "let's go"] => lo que hemos eliminado
153+
console.log(collection); // undefined, "yay", "nice", empty x 95,
154+
138155
// Comparando arrays
139156
// ⚠ Los arrays son objetos y por tanto implementan la misma comparación que éstos:
140157
const collection = [3];

02-languages/02-apuntes/01-javascript/107 default arguments.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,37 @@ greet(undefined); // "Hello, Unknown"
1111
greet(null); // "Hello, null"
1212

1313
// Se pueden aplicar valores por defecto a variables asignadas por destructuring
14-
const logName = ({ name = "Unknown" }) => console.log(name);
15-
logName({ age: 24 }); // "Unknown"
16-
logName({ name: "Carl" }); // "Carl"
17-
logName({}); // "Unknown"
14+
const greet = ({ name = "Unknown" }) => console.log("Hello, " + name);
15+
greet({ age: 24 }); // "Hello, Unknown"
16+
greet({ name: "Carl" }); // "Hello, Carl"
17+
greet({}); // "Hello, Unknown"
1818

1919
// PREGUNTA: Pero ¿que creeis que pasaría si llamo a la función sin argumento?
2020
// ¿o con argumento null?
2121

22-
logName(); // ⚠ Si no inicializamos el parametro a {} esto daría TypeError.
22+
greet(); // ⚠ Si no inicializamos el parametro a {} esto daría TypeError.
2323

2424
// Para evitar esos errores tenemos que inicializar también el argumento completo como objeto
2525
// vacío, no solo su propiedad name.
26-
const logName = ({ name = "Unknown" } = {}) => console.log(name);
26+
const greet = ({ name = "Unknown" } = {}) => console.log("Hello, " + name);
2727

28-
logName(); // Unknown. Ahora si!
28+
greet(); // Hello, Unknown. Ahora si!
2929

3030
// Este sería el único caso todavía problemático.
3131
// Al ser null un objeto no se toma la inicialización por defecto, el problema es que no se puede
3232
// hacer destructuring sobre null.
33-
logName(null); // ⚠ Uncaught TypeError.
33+
greet(null); // ⚠ Uncaught TypeError.
3434

3535
// No obstante, ahora que ya conocemos el destructuring y el operador nullish coalescing, tenemos
3636
// una alternativa igual de elegante y concisa. La solución para cubrirnos todos los casos sería
3737
// la siguiente:
38-
const logName = user => {
38+
const greet = user => {
3939
const { name = "Unknown" } = user ?? {};
40-
console.log(name);
40+
console.log("Hello, " + name);
4141
}
42-
logName({}); // "Unknown"
43-
logName(); // "Unknown"
44-
logName(null); // "Unknown"
42+
greet({}); // "Hello, Unknown"
43+
greet(); // "Hello, Unknown"
44+
greet(null); // "Hello, Unknown"
4545

4646
// Ejemplo con arrays:
4747
const sumDice = ([d1 = 0, d2 = 0] = []) => d1 + d2;

0 commit comments

Comments
 (0)