Skip to content

Commit e628b8d

Browse files
committed
Merge branch 'master' of github.com:javascript-tutorial/es.javascript.info into master
2 parents af3b708 + 986f770 commit e628b8d

File tree

66 files changed

+839
-581
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+839
-581
lines changed

1-js/02-first-steps/05-types/article.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,13 @@ const bigInt = 1234567890123456789012345678901234567890n;
8181

8282
Como los números `BigInt` rara vez se necesitan, no los cubrimos aquí, sino que les dedicamos un capítulo separado <info: bigint>. Léalo cuando necesite números tan grandes.
8383

84+
8485
```smart header="Problemas de compatibilidad"
85-
En este momento, `BigInt` es compatible con Firefox / Chrome / Edge, pero no con Safari / IE.
86+
En este momento, `BigInt` es compatible con Firefox/Chrome/Edge/Safari pero no con IE.
8687
```
8788

89+
Puedes revissar la [tabla de compatibilidad BigInt de *MDN*](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility) para conocer las versiones de navegadores soportadas.
90+
8891
## Un string
8992

9093
Un string (cadena de caracteres) en JavaScript debe estar encerrado entre comillas.
@@ -127,7 +130,7 @@ En el capítulo <info:string> trataremos más a fondo las cadenas.
127130
```smart header="No existe el tipo *carácter*".
128131
En algunos lenguajes, hay un tipo especial "carácter" para un solo carácter. Por ejemplo, en el lenguaje C y en Java es `char`.
129132

130-
En JavaScript no existe tal tipo. Sólo hay un tipo: `string`. Una cadena puede estar formada por un solo carácter o por varios de ellos.
133+
En JavaScript no existe tal tipo. Sólo hay un tipo: `string`. Una cadena puede estar formada por cero caracteres (estar vacía), un carácter o por varios de ellos.
131134
```
132135
133136
## Un boolean (tipo lógico)
@@ -257,7 +260,7 @@ Hay 8 tipos básicos en JavaScript.
257260
258261
- `number` para números de cualquier tipo: enteros o en punto flotante. Los enteros están limitados a ±2<sup>53</sup>.
259262
- `bigint` para números enteros de longitud arbitraria.
260-
- `string` para cadenas. Una cadena puede tener uno o más caracteres, no hay un tipo especial para un único carácter.
263+
- `string` para cadenas. Una cadena puede tener cero o más caracteres, no hay un tipo especial para un único carácter.
261264
- `boolean` para verdadero y falso: `true`/`false`.
262265
- `null` para valores desconocidos -- un tipo independiente que tiene un solo valor nulo: `null`.
263266
- `undefined` para valores no asignados -- un tipo independiente que tiene un único valor "indefinido": `undefined`.

1-js/02-first-steps/06-alert-prompt-confirm/article.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ Muestra una ventana modal con un mensaje de texto, un campo de entrada para el v
3030
`default`
3131
: Un segundo parámetro opcional, el valor inicial del campo de entrada.
3232

33-
El usuario puede escribir algo en el campo de entrada de solicitud y presionar OK. Luego obtenemos ese texto en el `resultado`. O pueden cancelar la entrada presionando Cancelar o presionando la tecla `: Esc`, luego obtenemos `null` como el `result`.
33+
```smart header="Corchetes en la sintaxis `[...]`"
34+
Los corchetes alrededor de `default` en la sintaxis de arriba denotan que el parámetro es opcional, no requerido.
35+
```
36+
37+
El usuario puede escribir algo en el campo de entrada de solicitud y presionar OK. Luego obtenemos ese texto en el `resultado`. O pueden cancelar la entrada presionando Cancelar o presionando la tecla `: Esc` obteniendo `null` como `result`.
3438
3539
La llamada a `prompt` retorna el texto del campo de entrada o `null` si la entrada fue cancelada.
3640

1-js/02-first-steps/08-operators/4-fix-prompt/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ let b = "2"; // prompt("¿Segundo número?", 2);
99
alert(a + b); // 12
1010
```
1111

12-
Lo que debemos hacer es convertir las cadenas de texto a números antes `+`. Por ejemplo, utilizando `Number()` o anteponiendo `+`.
12+
Lo que debemos hacer es convertir las cadenas de texto a números antes de `+`. Por ejemplo, utilizando `Number()` o anteponiendo `+`.
1313

1414
Por ejemplo, justo antes de `prompt`:
1515

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

Lines changed: 105 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# Operadores
1+
# Operadores básicos, matemáticas
22

3-
Conocemos varios operadores de la escuela. Son cosas como la suma `+`, multiplicación `*`, resta `-`, etcétera.
3+
Conocemos varios operadores matemáticos porque nos los enseñaron en la escuela. Son cosas como la suma `+`, multiplicación `*`, resta `-`, etcétera.
44

55
En este capítulo, nos vamos a concentrar en los aspectos de los operadores que no están cubiertos en la aritmética escolar.
66

@@ -26,9 +26,55 @@ Antes de continuar, comprendamos la terminología común.
2626
alert( y - x ); // 2, binario negativo resta valores
2727
```
2828

29-
Formalmente, estamos hablando de dos operadores distintos: la negación unaria (un operando: revierte el sómbolo) and la resta binaria (dos operandos: resta).
29+
Formalmente, estamos hablando de dos operadores distintos: la negación unaria (un operando: revierte el símbolo) y la resta binaria (dos operandos: resta).
3030

31-
## Concatenación de cadenas, binario +
31+
## Matemáticas
32+
33+
Están soportadas las siguientes operaciones:
34+
35+
- Suma `+`,
36+
- Resta `-`,
37+
- Multiplicación `*`,
38+
- División `/`,
39+
- Resto `%`,
40+
- Exponenciación `**`.
41+
42+
Los primeros cuatro son conocidos mientras que `%` y `**` deben ser explicados más ampliamente.
43+
44+
## Resto %
45+
46+
El operador resto `%`, a pesar de su apariencia, no está relacionado con porcentajes.
47+
48+
El resultado de `a % b` es el [resto](https://es.wikipedia.org/wiki/Resto) de la división entera de `a` por `b`.
49+
50+
Por ejemplo:
51+
52+
```js run
53+
alert( 5 % 2 ); // 1 es un resto de 5 dividido por 2
54+
alert( 8 % 3 ); // 2 es un resto de 8 dividido por 3
55+
```
56+
57+
## Exponenciación **
58+
59+
El operador de exponenciación `**` es una inclusión reciente al lenguaje.
60+
61+
Por ejemplo:
62+
63+
```js run
64+
alert( 2 ** 2 ); // 4 (2 * 2)
65+
alert( 2 ** 3 ); // 8 (2 * 2 * 2)
66+
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2)
67+
```
68+
69+
Matemáticamente, la exponenciación es definida para números no enteros también, Por ejemplo la raíz cuadrada es el exponente `1/2`:
70+
71+
```js run
72+
alert( 4 ** (1/2) ); // 2 (potencia de 1/2 es lo mismo que raíz cuadrada, eso es matemáticas)
73+
alert( 8 ** (1/3) ); // 2 (potencia de 1/3 es lo mismo que raíz cúbica)
74+
```
75+
76+
77+
## Concatenación de cadenas con el binario +
3278

3379
Ahora veamos características especiales de JavaScript que van más allá de las aritméticas escolares.
3480

@@ -50,16 +96,17 @@ alert( '1' + 2 ); // "12"
5096
alert( 2 + '1' ); // "21"
5197
```
5298

53-
Vieron, no importa si el primer operando es una cadena o el segundo. La regla es simple: si cualquiera de los operandos es una cadena, el otro también se convierte en una cadena.
54-
55-
Sin embargo, tenga en cuenta que las operaciones se ejecutan de izquierda a derecha. Si hay dos números seguidos de una cadena, los números se agregarán antes de convertirlos en una cadena:
99+
Vieron, no importa si el primer operando es una cadena o el segundo.
56100

101+
Aquí hay un ejemplo algo más complejo:
57102

58103
```js run
59104
alert(2 + 2 + '1' ); // "41" y no "221"
60105
```
61106

62-
Concatenación de cadena y conversión es una característica especial del operador binario suma `+`. Otros operadores aritméticos sólo funcionan con números y siempre convierten sus operandos a números.
107+
Aquí, los operandores trabajan uno después de otro. El primer `+` suma dos números entonces devuelve `4`, luego el siguiente `+` le agrega la cadena `1`, así que se evalúa como `4 + '1' = 41`.
108+
109+
El binario `+` es el único operador que soporta cadenas en esa forma. Otros operadores matemáticos trabajan solamente con números y siempre convierten sus operandos a números.
63110

64111
Por ejemplo, resta y división:
65112

@@ -95,8 +142,6 @@ Realmente hace lo mismo que `Number(...)`, pero es más corto.
95142

96143
La necesidad de convertir cadenas en números surge con mucha frecuencia. Por ejemplo, si estamos obteniendo valores de campos de formulario HTML, generalmente son cadenas.
97144

98-
¿Qué pasa si queremos sumarlos?
99-
100145
El operador binario suma los agregaría como cadenas:
101146

102147
```js run
@@ -135,13 +180,14 @@ Los paréntesis anulan cualquier precedencia, por lo que si no estamos satisfech
135180

136181
Hay muchos operadores en JavaScript. Cada operador tiene un número de precedencia correspondiente. El que tiene el número más grande se ejecuta primero. Si la precedencia es la misma, el orden de ejecución es de izquierda a derecha.
137182

138-
Aquí hay un extracto de la [tabla de precedencia] (https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence) (no necesita recordar esto, pero tenga en cuenta que los operadores unarios son más altos que el operador binario correspondiente):
183+
Aquí hay un extracto de la [tabla de precedencia](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence) (no necesita recordar esto, pero tenga en cuenta que los operadores unarios son más altos que el operador binario correspondiente):
139184

140185
| Precedencia| Nombre | Signo |
141186
|------------|------|------|
142187
| ... | ... | ... |
143188
| 16 | suma unaria | `+` |
144189
| 16 | negación unaria | `-` |
190+
| 16 | exponenciación | `**` |
145191
| 14 | multiplicación | `*` |
146192
| 14 | division | `/` |
147193
| 13 | suma | `+` |
@@ -164,24 +210,11 @@ let x = 2 * 2 + 1;
164210
alert( x ); // 5
165211
```
166212

167-
Es posible encadenar asignaciones:
213+
### Asignación = devuelve un valor
168214

169-
```js run
170-
let a, b, c;
171-
172-
*!*
173-
a = b = c = 2 + 2;
174-
*/!*
175-
176-
alert( a ); // 4
177-
alert( b ); // 4
178-
alert( c ); // 4
179-
```
180-
181-
Las asignaciones encadenadas evalúan de derecha a izquierda. Primero, se evalúa la expresión más a la derecha `2 + 2` y luego se asigna a las variables de la izquierda: `c`, `b` y `a`. Al final, todas las variables comparten un solo valor.
215+
El hecho de que `=` sea un operador, no un construcción "mágica" del lenguaje, tiene un implicanción interesante.
182216

183-
````smart header="El operador asignación `\"=\"` devuelve un valor"
184-
Un operador siempre devuelve un valor. Eso es obvio para la mayoría de ellos, como la suma `+` o la multiplicación `*`. Pero el operador de asignación también sigue esta regla.
217+
La mayoría de los operadores en JavaScript devuelven un valor. Esto es obvio para `+` y `-`, pero también es cierto para `=`.
185218

186219
La llamada `x = value` escribe el `value` en `x` *y luego lo devuelve*.
187220

@@ -201,44 +234,69 @@ alert( c ); // 0
201234

202235
En el ejemplo anterior, el resultado de la expresión `(a = b + 1)` es el valor asignado a `a` (es decir, `3`). Luego se usa para evaluaciones adicionales.
203236

204-
Código gracioso, ¿no? Deberíamos entender cómo funciona, porque a veces lo vemos en las bibliotecas de JavaScript, pero no deberíamos escribir algo así. Tales trucos definitivamente no hacen que el código sea más claro o legible.
205-
````
237+
Código gracioso, ¿no? Deberíamos entender cómo funciona, porque a veces lo vemos en las bibliotecas de JavaScript.
206238

207-
## Resto %
239+
Pero no deberíamos escribir algo así. Tales trucos definitivamente no hacen que el código sea más claro o legible.
208240

209-
El operador resto `%`, a pesar de su apariencia, no está relacionado con porcentajes.
241+
### Asignaciones encadenadas
210242

211-
El resultado de `a % b` es el resto de la división entera de `a` por `b`.
212-
213-
Por ejemplo:
243+
Otra característica interesante es la habilidad para encadenar asignaciones:
214244

215245
```js run
216-
alert( 5 % 2 ); // 1 es un resto de 5 dividido por 2
217-
alert( 8 % 3 ); // 2 es un resto de 8 dividido por 3
218-
alert( 6 % 3 ); // 0 es un resto de 6 dividido por 3
246+
let a, b, c;
247+
248+
*!*
249+
a = b = c = 2 + 2;
250+
*/!*
251+
252+
alert( a ); // 4
253+
alert( b ); // 4
254+
alert( c ); // 4
219255
```
220256

221-
## Exponenciación **
257+
Las asignaciones encadenadas evalúan de derecha a izquierda. Primero, se evalúa la expresión más a la derecha `2 + 2` y luego se asigna a las variables de la izquierda: `c`, `b` y `a`. Al final, todas las variables comparten un solo valor.
222258

223-
El operador de exponenciación `**` es una inclusión reciente al lenguaje.
259+
Una vez más, con el propósito de la legibilidad es mejor separa tal código en unas pocas líneas:
224260

225-
Para un número natural `b`, el resultado de `a ** b` es `a` multiplicado por sí mismos `b` veces.
261+
```js
262+
c = 2 + 2;
263+
b = c;
264+
a = c;
265+
```
266+
Es más fácil de leer, especialmente cuando se hace de un vistazo.
267+
268+
## Modificar en el lugar
269+
270+
A menudo necesitamos aplicar un operador a una variable y guardar el nuevo resultado en esa misma variable.
226271

227272
Por ejemplo:
228273

274+
```js
275+
let n = 2;
276+
n = n + 5;
277+
n = n * 2;
278+
```
279+
280+
Esta notación puede ser acortada utilizando los operadores `+=` y `*=`:
281+
229282
```js run
230-
alert( 2 ** 2 ); // 4 (2 * 2)
231-
alert( 2 ** 3 ); // 8 (2 * 2 * 2)
232-
alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2)
283+
let n = 2;
284+
n += 5; // ahora n = 7 (lo mismo que n = n + 5)
285+
n *= 2; // ahora n = 14 (lo mismo que n = n * 2)
286+
287+
alert( n ); // 14
233288
```
234289

235-
El operador también funciona para números no enteros.
290+
Los operadores cortos "modifica y asigna" existen para todos los operadores aritméticos y de nivel bit: `/=`, `-=`, etcétera.
236291

237-
Por ejemplo:
292+
Tales operadores tienen la misma precedencia que la asignación normal, por lo tanto se ejecutan después de otros cálculos:
238293

239294
```js run
240-
alert( 4 ** (1/2) ); // 2 (potencia de 1/2 es lo mismo que raíz cuadrada, eso es matemáticas)
241-
alert( 8 ** (1/3) ); // 2 (potencia de 1/3 es lo mismo que raíz cúbica)
295+
let n = 2;
296+
297+
n *= 3 + 5;
298+
299+
alert( n ); // 16 (lado derecho evaluado primero, lo mismo que n *= 8)
242300
```
243301

244302
## Incremento/decremento
@@ -372,40 +430,6 @@ La lista de operadores:
372430

373431
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.
374432

375-
## Modificar en el lugar
376-
377-
A menudo necesitamos aplicar un operador a una variable y guardar el nuevo resultado en esa misma variable.
378-
379-
Por ejemplo:
380-
381-
```js
382-
let n = 2;
383-
n = n + 5;
384-
n = n * 2;
385-
```
386-
387-
Esta notación puede ser acortada utilizando los operadores `+=` y `*=`:
388-
389-
```js run
390-
let n = 2;
391-
n += 5; // ahora n = 7 (lo mismo que n = n + 5)
392-
n *= 2; // ahora n = 14 (lo mismo que n = n * 2)
393-
394-
alert( n ); // 14
395-
```
396-
397-
Los operadores cortos "modifica y asigna" existen para todos los operadores aritméticos y de nivel bit: `/=`, `-=`, etcétera.
398-
399-
Tales operadores tienen la misma precedencia que la asignación normal, por lo tanto se ejecutan después de otros cálculos:
400-
401-
```js run
402-
let n = 2;
403-
404-
n *= 3 + 5;
405-
406-
alert( n ); // 16 (lado derecho evaluado primero, lo mismo que n *= 8)
407-
```
408-
409433
## Coma
410434

411435
El operador coma `,` es uno de los operadores más raros e inusuales. A veces, es utilizado para escribir código más corto, entonces tenemos que saberlo para poder entender qué está pasando.

1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ Algunas de las razones:
1717
3. Una vez más, la comparación lexicográfica, el primer carácter de `"2"` es mayor que el primer carácter de `"1"`.
1818
4. Los valores `null` y `undefined` son iguales entre sí solamente.
1919
5. La igualdad estricta es estricta. Diferentes tipos de ambos lados conducen a false.
20-
6. Similar a (4).
20+
6. Similar a (4), `null` solamente es igual a `undefined`.
2121
7. Igualdad estricta de diferentes tipos.

1-js/02-first-steps/09-comparison/article.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ El algoritmo para comparar dos cadenas es simple:
5757
4. Repita hasta el final de cada cadena.
5858
5. Si ambas cadenas tienen la misma longitud, entonces son iguales. De lo contrario, la cadena más larga es mayor.
5959

60-
En los ejemplos anteriores, la comparación `'Z' > 'A'` llega a un resultado en el primer paso, mientras que las cadenas `"Glow"` y `"Glee"` se comparan carácter por carácter:
60+
En los ejemplos anteriores, la comparación `'Z' > 'A'` llega a un resultado en el primer paso.
61+
62+
La segunda comparación `"Glow"` y `"Glee"` necesitan más pasos, se comparan carácter por carácter:
6163

6264
1. `G` es igual que `G`.
6365
2. `l` es igual que `l`.

1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ importance: 3
44

55
# Comprueba el rango por dentro
66

7-
Escribe una condición "if" para comprobar que `age`(edad) está entre `14` y `90` inclusivamente.
7+
Escribe una condición "if" para comprobar que `age`(edad) está entre `14` y `90` inclusive.
88

9-
"Inclusivamente" significa que `age` puede llegar a ser uno de los extremos, `14` o `90`.
9+
"Inclusive" significa que `age` puede llegar a ser uno de los extremos, `14` o `90`.

1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ importance: 3
44

55
# Comprueba el rango por fuera
66

7-
Escribe una condición `if` para comprobar que `age` NO está entre 14 y 90 inclusivemente.
7+
Escribe una condición `if` para comprobar que `age` NO está entre 14 y 90 inclusive.
88

9-
Crea dos variantes: la primera usando NOT `!`, y la segunda -- sin usarlo.
9+
Crea dos variantes: la primera usando NOT `!`, y la segunda sin usarlo.

1-js/02-first-steps/11-logical-operators/9-check-login/solution.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ if (userName == "Admin") {
77

88
let pass = prompt("¿Contraseña?", "");
99

10-
if (pass == "TheMaster") {
10+
if (pass === "TheMaster") {
1111
alert( "Bienvenido!" );
12-
} else if (pass == "" || pass == null) {
12+
} else if (pass === "" || pass === null) {
1313
alert( "Cancelado." );
1414
} else {
1515
alert( "Contraseña incorrecta" );
1616
}
1717

18-
} else if (userName == "" || userName == null) {
18+
} else if (userName === "" || userName === null) {
1919
alert( "Canceledo" );
2020
} else {
2121
alert( "No te conozco" );

0 commit comments

Comments
 (0)