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
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.
83
83
84
+
84
85
```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.
86
87
```
87
88
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
+
88
91
## Un string
89
92
90
93
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.
127
130
```smart header="No existe el tipo *carácter*".
128
131
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`.
129
132
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.
131
134
```
132
135
133
136
## Un boolean (tipo lógico)
@@ -257,7 +260,7 @@ Hay 8 tipos básicos en JavaScript.
257
260
258
261
- `number` para números de cualquier tipo: enteros o en punto flotante. Los enteros están limitados a ±2<sup>53</sup>.
259
262
- `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.
261
264
- `boolean` para verdadero y falso: `true`/`false`.
262
265
- `null` para valores desconocidos -- un tipo independiente que tiene un solo valor nulo: `null`.
263
266
- `undefined` para valores no asignados -- un tipo independiente que tiene un único valor "indefinido": `undefined`.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/06-alert-prompt-confirm/article.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,7 +30,11 @@ Muestra una ventana modal con un mensaje de texto, un campo de entrada para el v
30
30
`default`
31
31
: Un segundo parámetro opcional, el valor inicial del campo de entrada.
32
32
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`.
34
38
35
39
La llamada a `prompt` retorna el texto del campo de entrada o `null` si la entrada fue cancelada.
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.
4
4
5
5
En este capítulo, nos vamos a concentrar en los aspectos de los operadores que no están cubiertos en la aritmética escolar.
6
6
@@ -26,9 +26,55 @@ Antes de continuar, comprendamos la terminología común.
26
26
alert( y - x ); // 2, binario negativo resta valores
27
27
```
28
28
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).
30
30
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 +
32
78
33
79
Ahora veamos características especiales de JavaScript que van más allá de las aritméticas escolares.
34
80
@@ -50,16 +96,17 @@ alert( '1' + 2 ); // "12"
50
96
alert( 2 + '1' ); // "21"
51
97
```
52
98
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.
56
100
101
+
Aquí hay un ejemplo algo más complejo:
57
102
58
103
```js run
59
104
alert(2 + 2 + '1' ); // "41" y no "221"
60
105
```
61
106
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.
63
110
64
111
Por ejemplo, resta y división:
65
112
@@ -95,8 +142,6 @@ Realmente hace lo mismo que `Number(...)`, pero es más corto.
95
142
96
143
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.
97
144
98
-
¿Qué pasa si queremos sumarlos?
99
-
100
145
El operador binario suma los agregaría como cadenas:
101
146
102
147
```js run
@@ -135,13 +180,14 @@ Los paréntesis anulan cualquier precedencia, por lo que si no estamos satisfech
135
180
136
181
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.
137
182
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):
139
184
140
185
| Precedencia| Nombre | Signo |
141
186
|------------|------|------|
142
187
|...|...|...|
143
188
|16| suma unaria |`+`|
144
189
|16| negación unaria |`-`|
190
+
|16| exponenciación |`**`|
145
191
|14| multiplicación |`*`|
146
192
|14| division |`/`|
147
193
|13| suma |`+`|
@@ -164,24 +210,11 @@ let x = 2 * 2 + 1;
164
210
alert( x ); // 5
165
211
```
166
212
167
-
Es posible encadenar asignaciones:
213
+
### Asignación = devuelve un valor
168
214
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.
182
216
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 `=`.
185
218
186
219
La llamada `x = value` escribe el `value` en `x`*y luego lo devuelve*.
187
220
@@ -201,44 +234,69 @@ alert( c ); // 0
201
234
202
235
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.
203
236
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.
206
238
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.
208
240
209
-
El operador resto `%`, a pesar de su apariencia, no está relacionado con porcentajes.
241
+
### Asignaciones encadenadas
210
242
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:
214
244
215
245
```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
219
255
```
220
256
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.
222
258
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:
224
260
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.
226
271
227
272
Por ejemplo:
228
273
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
+
229
282
```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
233
288
```
234
289
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.
236
291
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:
238
293
239
294
```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)
242
300
```
243
301
244
302
## Incremento/decremento
@@ -372,40 +430,6 @@ La lista de operadores:
372
430
373
431
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.
374
432
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
-
409
433
## Coma
410
434
411
435
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.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/09-comparison/article.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,7 +57,9 @@ El algoritmo para comparar dos cadenas es simple:
57
57
4. Repita hasta el final de cada cadena.
58
58
5. Si ambas cadenas tienen la misma longitud, entonces son iguales. De lo contrario, la cadena más larga es mayor.
59
59
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:
0 commit comments