Skip to content

Commit e67f340

Browse files
authored
Merge pull request #326 from vplentinax/sync25July
sync25Jul
2 parents b565bbb + d01a90f commit e67f340

File tree

17 files changed

+63
-41
lines changed

17 files changed

+63
-41
lines changed

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

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Tipos de datos
22

3-
Una variable en JavaScript puede contener cualquier dato. Una variable puede ser una cadena en un momento dado y en otro, un número:
3+
Un valor en JavaScript siempre es de cierto tipo. Por ejemplo, un string(cadena de caracteres) o un número.
4+
5+
Hay ocho tipos de datos básicos en JavaScript. Aquí, los cubriremos en general y en los próximos capítulos hablaremos de cada uno de ellos en detalle.
6+
7+
Podemos poner cualquier tipo en una variable. Por ejemplo, una variable puede en un momento ser un string y luego almacenar un número:
48

59
```js
610
// no hay error
@@ -10,7 +14,6 @@ message = 123456;
1014

1115
Los lenguajes de programación que permiten estas cosas se denominan "dinámicamente tipeados", lo que significa que hay tipos de datos, pero las variables no están vinculadas a ninguno de ellos.
1216

13-
Hay siete tipos de datos básicos en JavaScript. Aquí, los cubriremos en general y en los próximos capítulos hablaremos de cada uno de ellos detalladamente.
1417

1518
## Un number
1619
```js
@@ -62,6 +65,27 @@ Los valores numéricos especiales pertenecen formalmente al tipo "número". Por
6265

6366
Veremos más sobre el trabajo con números en el capítulo <info:number>.
6467

68+
## BigInt
69+
70+
En JavaScript, el tipo "número" no puede representar valores enteros mayores que <code> (2 <sup> 53 </sup> -1) </code> (eso es `9007199254740991`), o menor que <code> - (2 <sup> 53 </sup> -1) </code> para negativos. Es una limitación técnica causada por su representación interna.
71+
72+
Para la mayoría de los propósitos es suficiente, pero a veces necesitamos números realmente grandes, e.j. para criptografía o marcas de tiempo de precisión de microsegundos.
73+
74+
`BigInt` se agregó recientemente al lenguaje para representar enteros de longitud arbitraria.
75+
76+
Un valor `BigInt` se crea agregando `n` al final de un entero:
77+
78+
```js
79+
// la "n" al final significa que es un BigInt
80+
const bigInt = 1234567890123456789012345678901234567890n;
81+
```
82+
83+
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.
84+
85+
```smart header="Problemas de compatibilidad"
86+
En este momento, `BigInt` es compatible con Firefox / Chrome / Edge, pero no con Safari / IE.
87+
```
88+
6589
## Un string
6690

6791
Un string (cadena de caracteres) en JavaScript debe estar encerrado entre comillas.
@@ -226,9 +250,10 @@ Las últimas tres líneas pueden necesitar una explicación adicional:
226250

227251
## Resumen
228252

229-
Hay 7 tipos básicos en JavaScript.
253+
Hay 8 tipos básicos en JavaScript.
230254

231255
- `number` para números de cualquier tipo: enteros o en punto flotante.
256+
- `bigint` para números enteros de longitud arbitraria.
232257
- `string` para cadenas. Una cadena puede tener uno o más caracteres, no hay un tipo especial para un único carácter.
233258
- `boolean` para `verdadero`/`falso`.
234259
- `null` para valores desconocidos -- un tipo independiente que tiene un solo valor `nulo`.

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

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,18 @@
11
# Interacción: alert, prompt, confirm
22

3-
Esta parte del tutorial pretende cubrir JavaScript "como es", sin ajustes específicos del entorno.
4-
5-
Pero como seguiremos utilizando el navegador como entorno de demostración, deberíamos conocer al menos algunas de sus funciones de la interfaz de usuario. En este capítulo, nos familiarizaremos con las funciones del navegador `alert`, `prompt` y `confirm`.
3+
Como usaremos el navegador como nuestro entorno de demostración, veamos un par de funciones para interactuar con el usuario: `alert`,` prompt` y `confirm`.
64

75
## alert
86

9-
Sintaxis:
10-
11-
```js
12-
alert(mensaje);
13-
```
14-
15-
Esto muestra un mensaje y detiene la ejecución del script hasta que el usuario pulsa "OK".
7+
Este ya lo hemos visto. Muestra un mensaje y espera a que el usuario presione "Aceptar".
168

179
Por ejemplo:
1810

1911
```js run
20-
alert("Hola");
12+
alert("Hello");
2113
```
2214

23-
La mini-ventana con el mensaje se llama *ventana modal*. La palabra "modal" significa que el usuario no puede interactuar con el resto de la página, presionar otros botones, etc. hasta que no se haya ocupado de la ventana. En este caso, hasta que pulse "OK".
15+
La mini ventana con el mensaje se llama * ventana modal *. La palabra "modal" significa que el visitante no puede interactuar con el resto de la página, presionar otros botones, etc., hasta que se haya ocupado de la ventana. En este caso, hasta que presionen "OK".
2416

2517
## prompt
2618

@@ -38,7 +30,7 @@ Muestra una ventana modal con un mensaje de texto, un campo de entrada para el v
3830
`default`
3931
: Un segundo parámetro opcional, el valor inicial del campo de entrada.
4032

41-
El usuario puede escribir algo en el campo de entrada y pulsar OK. O puede cancelar la entrada pulsando CANCELAR o presionando la tecla `key:Esc`.
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`.
4234

4335
La llamada a `prompt` retorna el texto del campo de entrada o `null` si la entrada fue cancelada.
4436

@@ -50,7 +42,7 @@ let age = prompt ('¿Cuántos años tienes?', 100);
5042
alert(`Tienes ${age} años!`); //Tienes 100 años!
5143
```
5244

53-
````warn header="En IE: siempre proporciona un `predeterminado`"
45+
````warn header="En IE: siempre proporciona un *predeterminado*"
5446
El segundo parámetro es opcional, pero si no lo proporcionamos, Internet Explorer insertará el texto `"undefined"` en el prompt.
5547
5648
Ejecuta este código en Internet Explorer para verlo:

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ En Javascript se escriben así:
66

77
- Mayor/menor que: <code>a &gt; b</code>, <code>a &lt; b</code>.
88
- Mayor/menor o igual que: <code>a &gt;= b</code>, <code>a &lt;= b</code>.
9-
- Igual: `a == b` (ten en cuenta el doble signo `=`. Un solo símbolo `a = b` significaría una asignación).
9+
- Igual: `a == b` (ten en cuenta el doble signo `==`. Un solo símbolo `a = b` significaría una asignación).
1010
- Distinto. En matemáticas la notación es <code>&ne;</code>, pero en JavaScript se escribe como una asignación con un signo de exclamación delante: <code>a != b</code>.
1111

1212
En este artículo, aprenderemos más sobre los diferentes tipos de comparaciones, cómo las realiza JavaScript, incluidas las peculiaridades importantes.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ En el caso de `height ?? 100` este retorna `100` solo si `height` es exactamente
6262
6363
## Precedencia
6464
65-
La precedencia del operador `??` es bastante baja: `7` en la [Tabla MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence#Table).
65+
La precedencia del operador `??` es bastante baja: `5` en la [Tabla MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Operadores/Operator_Precedence#Table).
6666
6767
Es más baja que en la mayoría de los operadores y un poco más alta que `=` y `?`.
6868

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Y el camino completo a la propiedad asegura que todos los componentes existen, p
4040

4141
El encadenamiento opcional `?.` detiene la evaluación y devuelve` undefined` si la parte anterior a `?.` es` undefined` o `null`.
4242

43-
Más adelante en este artículo, por brevedad, diremos que algo "existe" si no es `null` ni `undefined`.
43+
**Además en este artículo, por brevedad, diremos que algo "existe" si no es `null` o `undefined`.**
4444

4545

4646
Aquí está la forma segura de acceder a `user.address.street`:
@@ -64,7 +64,10 @@ alert( user?.address.street.anything ); // undefined
6464
6565
Tenga en cuenta: la sintaxis `?.` funciona exactamente donde está colocada, nada más.
6666
67-
En las últimas dos líneas, la evaluación se detiene inmediatamente después de `user?.`, sin acceder nunca a otras propiedades. Pero si `user` realmente existe, entonces las propiedades intermedias adicionales, como `user.address`deben existir.
67+
En el ejemplo anterior, `user?.` permite que solo `user` sea `null / undefined`.
68+
69+
Por otro lado, si `user` existe, entonces debe tener la propiedad `user.address`, de lo contrario `user?.Address.street` da un error en el segundo punto.
70+
6871
6972
```warn header="No abuses del encadenamiento opcional"
7073
Deberíamos usar `?.` solo donde está bien que algo no exista.
@@ -74,14 +77,14 @@ Por ejemplo, si de acuerdo con nuestra lógica de codificación, el objeto `user
7477
Entonces, si `user` no está definido debido a un error, lo sabremos y lo arreglaremos. De lo contrario, los errores de codificación pueden silenciarse donde no sea apropiado y volverse más difíciles de depurar.
7578
```
7679
77-
````warn header="La variable antes de ?. debe existir"
78-
Si no hay una variable `user`, entonces `user? .Anything` provocará un error:
80+
````warn header="La variable antes de ?. debe declararse"
81+
Si no hay una variable `user` declarada, entonces `user?.Anything` provocará un error:
7982
8083
```js run
8184
// ReferenceError: El usuario no está definido
8285
user?.address;
8386
```
84-
El encadenamiento opcional solo prueba para `null/undefined`, no interfiere con ninguna otra mecánica del lenguaje.
87+
Debe haber `let / const / var user`. El encadenamiento opcional solo funciona para variables declaradas.
8588
````
8689

8790
## Short-circuiting (Cortocircuitos)

1-js/04-object-basics/08-symbol/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ let id = Symbol("id");
131131
let user = {
132132
name: "John",
133133
*!*
134-
[id]: 123 // no "id: 123"
134+
[id]: 123 // no "id": 123
135135
*/!*
136136
};
137137
```

1-js/06-advanced-functions/10-bind/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ for (let key in user) {
216216
}
217217
```
218218
219-
Las bibliotecas de JavaScript también proporcionan funciones para un enlace masivo, e.j. [_.bindAll(obj)](http://lodash.com/docs#bindAll) en lodash.
219+
Las bibliotecas de JavaScript también proporcionan funciones para un enlace masivo, e.j. [_.bindAll(object, methodNames)](http://lodash.com/docs#bindAll) en lodash.
220220
````
221221

222222
## Funciones parciales

1-js/08-prototypes/04-prototype-methods/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ En el primer capítulo de esta sección, mencionamos que existen métodos modern
99

1010
Los métodos modernos son:
1111

12-
- [Object.create(proto[, descriptors])] (mdn:js/Object/create): crea un objeto vacío con el "proto" dado como `[[Prototype]]` y descriptores de propiedad opcionales.
12+
- [Object.create(proto, [descriptors])] (mdn:js/Object/create): crea un objeto vacío con el "proto" dado como `[[Prototype]]` y descriptores de propiedad opcionales.
1313
- [Object.getPrototypeOf(obj)](mdn:js/Object/getPrototypeOf) - devuelve el `[[Prototype]]` de `obj`.
1414
- [Object.setPrototypeOf(obj, proto)](mdn:js/Object/setPrototypeOf) - establece el `[[Prototype]]` de `obj` en `proto`.
1515

1-js/10-error-handling/1-try-catch/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ La técnica de "rethrowing" puede explicarse con más detalle:
363363

364364
1. Catch captura todos los errores.
365365
2. En el bloque `catch(err) {...}` analizamos el objeto error `err`.
366-
2. Si no sabemos cómo manejarlo, hacemos 'throw err`.
366+
3. Si no sabemos cómo manejarlo, hacemos 'throw err`.
367367

368368
Por lo general, podemos verificar el tipo de error usando el operador `instanceof`:
369369

1-js/11-async/04-promise-error-handling/article.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ Here the `.catch` block finishes normally. So the next successful `.then` handle
122122
In the example below we see the other situation with `.catch`. The handler `(*)` catches the error and just can't handle it (e.g. it only knows how to handle `URIError`), so it throws it again:
123123

124124
```js run
125-
// the execution: catch -> catch -> then
125+
// the execution: catch -> catch
126126
new Promise((resolve, reject) => {
127127

128128
throw new Error("Whoops!");
@@ -201,4 +201,4 @@ In non-browser environments like Node.js there are other ways to track unhandled
201201
- `.catch` handles errors in promises of all kinds: be it a `reject()` call, or an error thrown in a handler.
202202
- We should place `.catch` exactly in places where we want to handle errors and know how to handle them. The handler should analyze errors (custom error classes help) and rethrow unknown ones (maybe they are programming mistakes).
203203
- It's ok not to use `.catch` at all, if there's no way to recover from an error.
204-
- In any case we should have the `unhandledrejection` event handler (for browsers, and analogs for other environments) to track unhandled errors and inform the user (and probably our server) about them, so that our app never "just dies".
204+
- In any case we should have the `unhandledrejection` event handler (for browsers, and analogs for other environments) to track unhandled errors and inform the user (and probably our server) about them, so that our app never "just dies".

2-ui/1-document/07-modifying-document/article.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ Creating the message div takes 3 steps:
5757
```js
5858
// 1. Create <div> element
5959
let div = document.createElement('div');
60+
6061
// 2. Set its class to "alert"
6162
div.className = "alert";
62-
// Fill it with the content
63+
64+
// 3. Fill it with the content
6365
div.innerHTML = "<strong>Hi there!</strong> You've read an important message.";
6466
```
6567

@@ -99,10 +101,10 @@ Here we called `append` on `document.body`, but we can call `append` method on a
99101

100102
Here are more insertion methods, they specify different places where to insert:
101103

102-
- `node.append(...nodes or strings)` -- append nodes or strings at the end of `node`,
103-
- `node.prepend(...nodes or strings)` -- insert nodes or strings at the beginning of `node`,
104-
- `node.before(...nodes or strings)` –- insert nodes or strings before `node`,
105-
- `node.after(...nodes or strings)` –- insert nodes or strings after `node`,
104+
- `node.append(...nodes or strings)` -- append nodes or strings *at the end* of `node`,
105+
- `node.prepend(...nodes or strings)` -- insert nodes or strings *at the beginning* of `node`,
106+
- `node.before(...nodes or strings)` –- insert nodes or strings *before* `node`,
107+
- `node.after(...nodes or strings)` –- insert nodes or strings *after* `node`,
106108
- `node.replaceWith(...nodes or strings)` –- replaces `node` with the given nodes or strings.
107109

108110
Arguments of these methods are an arbitrary list of DOM nodes to insert, or text strings (that become text nodes automatically).

2-ui/2-events/01-introduction-browser-events/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ element.removeEventListener(event, handler, [options]);
236236
````warn header="Removal requires the same function"
237237
To remove a handler we should pass exactly the same function as was assigned.
238238
239-
That doesn't work:
239+
This doesn't work:
240240
241241
```js no-beautify
242242
elem.addEventListener( "click" , () => alert('Thanks!'));

2-ui/2-events/02-bubbling-and-capturing/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ The code sets click handlers on *every* element in the document to see which one
181181
If you click on `<p>`, then the sequence is:
182182

183183
1. `HTML` -> `BODY` -> `FORM` -> `DIV` (capturing phase, the first listener):
184-
2. `P` (target phase, triggers two times, as we've set two listeners: capturing and bubbling)
184+
2. `P` (target phrase, triggers two times, as we've set two listeners: capturing and bubbling)
185185
3. `DIV` -> `FORM` -> `BODY` -> `HTML` (bubbling phase, the second listener).
186186

187187
There's a property `event.eventPhase` that tells us the number of the phase on which the event was caught. But it's rarely used, because we usually know it in the handler.

2-ui/3-event-details/4-mouse-drag-and-drop/ball.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
<script>
16-
ball.onmousedown = function(event) {
16+
ball.onmousedown = function(event) {
1717
ball.style.position = 'absolute';
1818
ball.style.zIndex = 1000;
1919
document.body.appendChild(ball);

3-frames-and-windows/03-cross-window-communication/sandbox.view/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<body>
99

10-
<div>The iframe below is has <code>sandbox</code> attribute.</div>
10+
<div>The iframe below has the <code>sandbox</code> attribute.</div>
1111

1212
<iframe sandbox src="sandboxed.html" style="height:60px;width:90%"></iframe>
1313

5-network/07-url/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ It provides convenient methods for search parameters:
8888
- **`delete(name)`** -- remove the parameter by `name`,
8989
- **`get(name)`** -- get the parameter by `name`,
9090
- **`getAll(name)`** -- get all parameters with the same `name` (that's possible, e.g. `?user=John&user=Pete`),
91-
- **`has(name)`** -- check for the existance of the parameter by `name`,
91+
- **`has(name)`** -- check for the existence of the parameter by `name`,
9292
- **`set(name, value)`** -- set/replace the parameter,
9393
- **`sort()`** -- sort parameters by name, rarely needed,
9494
- ...and it's also iterable, similar to `Map`.

6-data-storage/02-localstorage/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ Los navegadores modernos también soportan la [API de Broadcast channel API](htt
218218

219219
Los objetos de almacenaje web `localStorage` y `sessionStorage` permiten guardar pares de clave/valor en el navegador.
220220
- Tanto la `clave` como el `valor` deben ser strings, cadenas de texto.
221-
- El límite es de más de 2mb; depende del navegador.
221+
- El límite es de más de 5mb+; depende del navegador.
222222
- No expiran.
223223
- Los datos están vinculados al orígen (domínio/puerto/protocolo).
224224

0 commit comments

Comments
 (0)