Skip to content

Commit d9a6d47

Browse files
committed
susy220419
2 parents 661372f + 291b5c0 commit d9a6d47

33 files changed

Lines changed: 207 additions & 121 deletions

File tree

1-js/02-first-steps/07-type-conversions/article.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ Por ejemplo, `alert` convierte automáticamente cualquier valor a string para mo
66

77
También hay casos donde necesitamos convertir de manera explícita un valor al tipo esperado.
88

9-
```smart header="Aún no hablamos de objetos"
10-
En este capítulo no cubriremos los objetos. Estudiaremos los valores primitivos primero. Luego, después de haber hablado sobre objetos, veremos cómo funciona la conversión de objetos en este capítulo <info:object-toprimitive>.
9+
```smart header="No hablaremos de objetos aún"
10+
En este capítulo no cubriremos los objetos. Por ahora, solamente veremos los valores primitivos.
11+
12+
Luego, después de haber aprendido objetos, veremos cómo funciona la conversión de objetos en el capítulo <info:object-toprimitive>.
1113
```
1214

1315
## ToString

1-js/02-first-steps/08-operators/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ La lista de operadores:
437437
- RIGHT SHIFT ( `>>` )
438438
- ZERO-FILL RIGHT SHIFT ( `>>>` )
439439

440-
Estos operadores se usan muy raramente. Para comprenderlos, necesitamos profundizar en la representación de números de bajo nivel y no sería óptimo hacerlo en este momento, especialmente porque no los necesitaremos pronto. Si tienes curiosidad, puedes leer el artículo [Operadores a nivel de bit](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators#Bitwise_AND) en MDN. Sería más práctico hacerlo cuando surja una necesidad real.
440+
Estos operadores se usan muy raramente, cuando necesitamos manejar la representación de números em su más bajo nivel. No tenemos en vista usarlos pronto pues en el desarrollo web tiene poco uso; pero en ciertas áreas especiales, como la criptografía, son útiles. Puedes leer el artículo [Operadores a nivel de bit](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators#Bitwise_AND) en MDN cuando surja la necesidad.
441441

442442
## Coma
443443

1-js/02-first-steps/12-nullish-coalescing-operator/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
El operador "nullish coalescing" (fusión de null) se escribe con un doble signo de cierre de interrogación `??`.
66

7-
Como este trata a `null` y a `undefined` de forma similar, usaremos un término particular para ello en este artículo. Diremos que una expresión es `definida` cuando no es `null` ni `undefined`.
7+
Como este trata a `null` y a `undefined` de forma similar, usaremos un término especial para este artículo. Diremos que una expresión es "definida" cuando no es `null` ni `undefined`.
88

99
El resultado de `a ?? b`:
1010
- si `a` está "definida", será `a`,
@@ -22,9 +22,9 @@ result = (a !== null && a !== undefined) ? a : b;
2222

2323
Ahora debería estar absolutamente claro lo que `??` hace. Veamos dónde podemos utilizarlo.
2424

25-
Un uso típico de `??` es brindar un valor predeterminado a una variable potencialmente indefinida.
25+
El uso típico de `??` es brindar un valor predeterminado.
2626

27-
Por ejemplo, aquí mostramos `user` si está definido. Si no, `Anonymous`:
27+
Por ejemplo, aquí mostramos `user` si su valor no es `null/undefined`, de otro modo muestra `Anonymous`:
2828

2929
```js run
3030
let user;
@@ -42,9 +42,9 @@ alert(user ?? "Anonymous"); // John (user definido)
4242
4343
También podemos usar una secuencia de `??` para seleccionar el primer valor que no sea `null/undefined` de una lista.
4444
45-
Digamos que tenemos los datos de un usuario en las variables `firstName`, `lastName` y `nickName`. Todos ellos podrían ser indefinidos si el usuario decide no ingresarlos.
45+
Digamos que tenemos los datos de un usuario en las variables `firstName`, `lastName` y `nickName`. Todos ellos podrían ser indefinidos si el usuario decide no ingresar los valores correspondientes.
4646
47-
Queremos mostrar un nombre usando una de las tres variables, o mostrar "anónimo" si ninguna está definida:
47+
Queremos mostrar un nombre usando una de estas variables, o mostrar "anónimo" si todas ellas son `null/undefined`.
4848
4949
Usemos el operador `??` para ello:
5050
@@ -110,7 +110,7 @@ La precedencia del operador `??` es la misma de `||`. Ambos son iguales a `4` en
110110
111111
Esto significa que ambos operadores, `||` y `??`, son evaluados antes que `=` y `?`, pero después de la mayoría de las demás operaciones como `+` y `*`.
112112
113-
Así que si necesitas usar `??` en una expresión compleja, considera añadir paréntesis:
113+
Así que podemos necesitar añadir paréntesis:
114114
115115
```js run
116116
let height = null;
@@ -128,7 +128,7 @@ Caso contrario, si omitimos los paréntesis, entonces `*` tiene una mayor preced
128128
// sin paréntesis
129129
let area = height ?? 100 * width ?? 50;
130130

131-
// ...funciona igual que (probablemente no lo que queremos):
131+
// ...funciona de esta forma (no es lo que queremos):
132132
let area = height ?? (100 * width) ?? 50;
133133
```
134134
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
Ninguna diferencia.
1+
¡Ninguna diferencia!
2+
3+
En ambos casos, `return confirm('¿Tus padres te permitieron?')` se ejecuta exactamente cuando la condición `if` es falsa.

1-js/02-first-steps/15-function-basics/article.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,38 @@ En el ejemplo anterior, `anotherFunction()` no será llamado en absoluto si se p
225225
Por otro lado, se llamará independientemente cada vez que `text` se omita.
226226
```
227227
228+
````smart header="Parámetros predeterminados en viejo código JavaScript"
229+
Años atrás, JavaScript no soportaba la sintaxis para parámetros predeterminados. Entonces se usaban otras formas para especificarlos.
230+
231+
En estos días, aún podemos encontrarlos en viejos scripts.
232+
233+
Por ejemplo, una verificación explícita de `undefined`:
234+
235+
```js
236+
function showMessage(from, text) {
237+
*!*
238+
if (text === undefined) {
239+
text = 'sin texto dado';
240+
}
241+
*/!*
242+
243+
alert( from + ": " + text );
244+
}
245+
```
246+
247+
... O usando el operador `||` :
248+
249+
```js
250+
function showMessage(from, text) {
251+
// Si el valor de "text" es falso, asignar el valor predeterminado
252+
// esto asume que text == "" es lo mismo que sin texto en absoluto
253+
text = text || 'sin texto dado';
254+
...
255+
}
256+
```
257+
````
258+
259+
228260
### Parámetros predeterminados alternativos
229261
230262
A veces tiene sentido asignar valores predeterminados no en la declaración de función sino en un estadio posterior.

1-js/02-first-steps/16-function-expressions/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ Primero, la sintaxis: cómo diferenciarlas en el código.
194194
return a + b;
195195
}
196196
```
197-
- *Expresión de Función:* una función, creada dentro de una expresión o dentro de otra construcción de sintaxis. Aquí, la función es creada en el lado derecho de la "expresión de asignación" `=`:
197+
- *Expresión de Función:* una función, creada dentro de una expresión o dentro de otra construcción sintáctica. Aquí, la función es creada en el lado derecho de la "expresión de asignación" `=`:
198198

199199
```js
200200
// Expresión de Función
@@ -292,8 +292,8 @@ if (age < 18) {
292292
*/!*
293293
// |
294294
function welcome() { // |
295-
alert("Hola!"); // | Declaración de Función está disponible
296-
} // | en todas partes del bloque donde esté declarada
295+
alert("¡Hola!"); // | La declaración de Función está disponible
296+
} // | en todas partes del bloque donde está declarada
297297
// |
298298
*!*
299299
welcome(); // / (corre)
@@ -302,7 +302,7 @@ if (age < 18) {
302302
} else {
303303
304304
function welcome() {
305-
alert("Saludos!");
305+
alert("¡Saludos!");
306306
}
307307
}
308308
@@ -347,11 +347,11 @@ welcome(); // ahora ok
347347
O lo podemos simplificar aun más usando un operador de signo de pregunta `?`:
348348

349349
```js run
350-
let age = prompt("Cuál es tu edad?", 18);
350+
let age = prompt("¿Cuál es tu edad?", 18);
351351
352352
let welcome = (age < 18) ?
353-
function() { alert("Hola!"); } :
354-
function() { alert("Saludos!"); };
353+
function() { alert("¡Hola!"); } :
354+
function() { alert("¡Saludos!"); };
355355
356356
*!*
357357
welcome(); // ahora ok

1-js/02-first-steps/17-arrow-functions-basics/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ Como puedes ver, `(a, b) => a + b` significa una función que acepta dos argumen
5151
- Si no hay parámetros, los paréntesis estarán vacíos pero deben estar presentes:
5252

5353
```js run
54-
let sayHi = () => alert("Hello!");
54+
let sayHi = () => alert("¡Hola!");
5555
5656
sayHi();
5757
```
@@ -64,8 +64,8 @@ Por ejemplo, para crear dinámicamente una función:
6464
let age = prompt("What is your age?", 18);
6565
6666
let welcome = (age < 18) ?
67-
() => alert('Hello') :
68-
() => alert("Greetings!");
67+
() => alert('¡Hola!') :
68+
() => alert("¡Saludos!");
6969
7070
welcome();
7171
```

1-js/04-object-basics/01-object/article.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Podemos imaginar al objeto `user` resultante como un gabinete con dos archivos f
4444

4545
![user object](object-user.svg)
4646

47-
Podemos agregar, eliminar y leer archivos de ahí en cualquier momento.
47+
Podemos agregar, eliminar y leer archivos de él en cualquier momento.
4848

4949
Se puede acceder a los valores de las propiedades utilizando la notación de punto:
5050

@@ -62,7 +62,7 @@ user.isAdmin = true;
6262

6363
![user object 2](object-user-isadmin.svg)
6464

65-
Para remover una propiedad podemos usar el operador `delete`:
65+
Para eliminar una propiedad podemos usar el operador `delete`:
6666

6767
```js
6868
delete user.age;
@@ -201,7 +201,7 @@ let bag = {
201201
};
202202
```
203203

204-
Los corchetes son mucho más potentes que la notación de punto. Permiten cualquier nombre de propiedad y variables. Pero también son más engorrosos de escribir.
204+
Los corchetes son mucho más potentes que la notación de punto. Permiten cualquier nombre de propiedad, y variables. Pero también son más engorrosos de escribir.
205205

206206
Entonces, la mayoría de las veces, cuando los nombres de propiedad son conocidos y simples, se utiliza el punto. Y si necesitamos algo más complejo, entonces cambiamos a corchetes.
207207

@@ -252,7 +252,7 @@ let user = {
252252

253253
## Limitaciones de nombres de propiedad
254254

255-
Como ya sabemos, una variable no puede tener un nombre igual a una de las palabras reservadas del lenguaje como "for", "let", "return", etc.
255+
Como ya sabemos, una variable no puede tener un nombre igual a una de las palabras reservadas del lenguaje, como "for", "let", "return", etc.
256256

257257
Pero para una propiedad de objeto no existe tal restricción:
258258

@@ -324,8 +324,8 @@ alert( "blabla" in user ); // mostrará false, user.blabla no existe
324324
```
325325

326326
Nota que a la izquierda de `in` debe estar el *nombre de la propiedad* que suele ser un string entre comillas.
327-
328-
Si omitimos las comillas significa una variable. Esta variable debería almacenar la clave real que será probado. Por ejemplo:
327+
<<<<<<< HEAD
328+
Omitir las comillas significará una variable que debe almacenar la clave real que será probada. Por ejemplo:
329329

330330
```js run
331331
let user = { age: 30 };
@@ -412,7 +412,7 @@ for (let code in codes) {
412412
*/!*
413413
```
414414
415-
El objeto puede usarse para sugerir una lista de opciones al usuario. Si estamos haciendo un sitio principalmente para el público alemán, entonces probablemente queremos que `49` sea el primero.
415+
El objeto puede usarse para sugerir una lista de opciones al usuario. Si estamos haciendo un sitio principalmente para el público alemán, probablemente queremos que `49` sea el primero.
416416
417417
Pero si ejecutamos el código, veremos una imagen totalmente diferente:
418418
@@ -426,7 +426,7 @@ El término "propiedad de números enteros" aquí significa que una cadena se pu
426426
427427
Entonces, "49" es un nombre de propiedad entero, porque cuando este se transforma a un entero y viceversa continúa siendo el mismo. Pero "+49" y "1.2" no lo son:
428428
429-
```js run
429+
// Number(...) convierte explícitamente a number
430430
// Math.trunc es una función nativa que elimina la parte decimal
431431
alert( String(Math.trunc(Number("49"))) ); // "49", es igual, una propiedad entera
432432
alert( String(Math.trunc(Number("+49"))) ); // "49", no es igual "+49" ⇒ no es una propiedad entera
@@ -481,7 +481,7 @@ Almacenan propiedades (pares de clave-valor), donde:
481481

482482
Para acceder a una propiedad, podemos usar:
483483
- La notación de punto: `obj.property`.
484-
- Notación de corchetes `obj["property"]`. Los corchetes permiten tomar la clave de una variable, como `obj[varWithKey]`.
484+
- La notación de corchetes `obj["property"]`. Los corchetes permiten tomar la clave de una variable, como `obj[varWithKey]`.
485485

486486
Operadores adicionales:
487487
- Para eliminar una propiedad: `delete obj.prop`.

1-js/04-object-basics/04-object-methods/7-calculator/task.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ importance: 5
66

77
Crea un objeto `calculator` con tres métodos:
88

9-
- `read()` pide dos valores y los almacena como propiedades de objeto.
9+
- `read()` pide dos valores y los almacena como propiedades de objeto con nombres `a` y `b`.
1010
- `sum()` devuelve la suma de los valores almacenados.
1111
- `mul()` multiplica los valores almacenados y devuelve el resultado.
1212

@@ -21,4 +21,3 @@ alert( calculator.mul() );
2121
```
2222

2323
[demo]
24-

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ El código es corto y claro, no hay duplicación en absoluto
103103
Aquí tenemos un ejemplo con `document.querySelector`:
104104
105105
```js run
106-
let html = document.querySelector('.elem')?.innerHTML; // será null si no existe el elemento
106+
let html = document.querySelector('.elem')?.innerHTML; // será undefined si no existe el elemento
107107
```
108108
109109
Leer la dirección con `user?.Address` funciona incluso si el objeto `user` no existe:
@@ -182,7 +182,7 @@ userGuest.admin?.(); // no pasa nada (no existe tal método)
182182

183183
Aquí, en ambas líneas, primero usamos el punto (`userAdmin.admin`) para obtener la propiedad `admin`, porque asumimos que el objeto user existe y es seguro leerlo.
184184

185-
Entonces `?.()` Comprueba la parte izquierda: si la función admin existe, entonces se ejecuta (para `userAdmin`). De lo contrario (para `userGuest`) la evaluación se detiene sin errores.
185+
Entonces `?.()` comprueba la parte izquierda: si la función `admin` existe, entonces se ejecuta (para `userAdmin`). De lo contrario (para `userGuest`) la evaluación se detiene sin errores.
186186

187187
La sintaxis `?.[]` también funciona si quisiéramos usar corchetes `[]` para acceder a las propiedades en lugar de punto `.`. Al igual que en casos anteriores, permite leer de forma segura una propiedad de un objeto que puede no existir.
188188

@@ -206,7 +206,7 @@ delete user?.name; // Eliminar user.name si el usuario existe
206206
```
207207

208208
````warn header="Podemos usar `?.` para una lectura y eliminación segura, pero no para escribir"
209-
El encadenamiento opcional `?.` no tiene uso en el lado izquierdo de una tarea:
209+
El encadenamiento opcional `?.` no puede usarse en el lado izquierdo de una asignación:
210210

211211
Por ejemplo:
212212
```js run

0 commit comments

Comments
 (0)