You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/07-type-conversions/article.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,8 +6,10 @@ Por ejemplo, `alert` convierte automáticamente cualquier valor a string para mo
6
6
7
7
También hay casos donde necesitamos convertir de manera explícita un valor al tipo esperado.
8
8
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>.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/08-operators/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -437,7 +437,7 @@ La lista de operadores:
437
437
-RIGHTSHIFT ( `>>` )
438
438
-ZERO-FILLRIGHTSHIFT ( `>>>` )
439
439
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. Puedesleer el artículo [Operadores a nivel de bit](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Bitwise_Operators#Bitwise_AND) en MDNcuando surja la necesidad.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/12-nullish-coalescing-operator/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
El operador "nullish coalescing" (fusión de null) se escribe con un doble signo de cierre de interrogación `??`.
6
6
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`.
8
8
9
9
El resultado de `a ?? b`:
10
10
- si `a` está "definida", será `a`,
@@ -22,9 +22,9 @@ result = (a !== null && a !== undefined) ? a : b;
22
22
23
23
Ahora debería estar absolutamente claro lo que `??` hace. Veamos dónde podemos utilizarlo.
24
24
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.
26
26
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`:
También podemos usar una secuencia de `??` para seleccionar el primer valor que no sea `null/undefined` de una lista.
44
44
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.
46
46
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`.
48
48
49
49
Usemos el operador `??` para ello:
50
50
@@ -110,7 +110,7 @@ La precedencia del operador `??` es la misma de `||`. Ambos son iguales a `4` en
110
110
111
111
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 `*`.
112
112
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:
114
114
115
115
```js run
116
116
let height =null;
@@ -128,7 +128,7 @@ Caso contrario, si omitimos los paréntesis, entonces `*` tiene una mayor preced
128
128
// sin paréntesis
129
129
let area = height ??100* width ??50;
130
130
131
-
// ...funciona igual que (probablemente no lo que queremos):
131
+
// ...funciona de esta forma (no es lo que queremos):
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/16-function-expressions/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -194,7 +194,7 @@ Primero, la sintaxis: cómo diferenciarlas en el código.
194
194
return a + b;
195
195
}
196
196
```
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"`=`:
198
198
199
199
```js
200
200
// Expresión de Función
@@ -292,8 +292,8 @@ if (age < 18) {
292
292
*/!*
293
293
// |
294
294
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
297
297
// |
298
298
*!*
299
299
welcome(); // / (corre)
@@ -302,7 +302,7 @@ if (age < 18) {
302
302
} else {
303
303
304
304
function welcome() {
305
-
alert("Saludos!");
305
+
alert("¡Saludos!");
306
306
}
307
307
}
308
308
@@ -347,11 +347,11 @@ welcome(); // ahora ok
347
347
O lo podemos simplificar aun más usando un operador de signo de pregunta `?`:
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/01-object/article.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ Podemos imaginar al objeto `user` resultante como un gabinete con dos archivos f
44
44
45
45

46
46
47
-
Podemos agregar, eliminar y leer archivos de ahí en cualquier momento.
47
+
Podemos agregar, eliminar y leer archivos de él en cualquier momento.
48
48
49
49
Se puede acceder a los valores de las propiedades utilizando la notación de punto:
50
50
@@ -62,7 +62,7 @@ user.isAdmin = true;
62
62
63
63

64
64
65
-
Para remover una propiedad podemos usar el operador `delete`:
65
+
Para eliminar una propiedad podemos usar el operador `delete`:
66
66
67
67
```js
68
68
deleteuser.age;
@@ -201,7 +201,7 @@ let bag = {
201
201
};
202
202
```
203
203
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.
205
205
206
206
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.
207
207
@@ -252,7 +252,7 @@ let user = {
252
252
253
253
## Limitaciones de nombres de propiedad
254
254
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.
256
256
257
257
Pero para una propiedad de objeto no existe tal restricción:
258
258
@@ -324,8 +324,8 @@ alert( "blabla" in user ); // mostrará false, user.blabla no existe
324
324
```
325
325
326
326
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:
329
329
330
330
```js run
331
331
let user = { age:30 };
@@ -412,7 +412,7 @@ for (let code in codes) {
412
412
*/!*
413
413
```
414
414
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.
416
416
417
417
Pero si ejecutamos el código, veremos una imagen totalmente diferente:
418
418
@@ -426,7 +426,7 @@ El término "propiedad de números enteros" aquí significa que una cadena se pu
426
426
427
427
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:
428
428
429
-
```js run
429
+
// Number(...) convierte explícitamente a number
430
430
// Math.trunc es una función nativa que elimina la parte decimal
431
431
alert( String(Math.trunc(Number("49"))) ); // "49", es igual, una propiedad entera
432
432
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:
481
481
482
482
Para acceder a una propiedad, podemos usar:
483
483
- 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]`.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/07-optional-chaining/article.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -103,7 +103,7 @@ El código es corto y claro, no hay duplicación en absoluto
103
103
Aquí tenemos un ejemplo con `document.querySelector`:
104
104
105
105
```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
107
107
```
108
108
109
109
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)
182
182
183
183
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.
184
184
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.
186
186
187
187
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.
188
188
@@ -206,7 +206,7 @@ delete user?.name; // Eliminar user.name si el usuario existe
206
206
```
207
207
208
208
````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:
0 commit comments