Skip to content

Commit becfe45

Browse files
authored
Merge pull request #637 from joaquinelio/susy220627
Susy220627
2 parents 299b792 + 92c0d8f commit becfe45

File tree

63 files changed

+136
-104
lines changed

Some content is hidden

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

63 files changed

+136
-104
lines changed

Diff for: 1-js/01-getting-started/3-code-editors/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Si aún no has seleccionado un IDE, considera las siguientes opciones:
1717

1818
Para Windows, también está "Visual Studio", no lo confundamos con "Visual Studio Code". "Visual Studio" es un poderoso editor pagado sólo para Windows, idóneo para la plataforma .NET. Una versión gratuita es de este editor se llama [Visual Studio Community](https://www.visualstudio.com/vs/community/).
1919

20-
Muchos IDEs son de paga pero tienen un periodo de prueba. Su costo usualmente es pequeño si lo comparamos al salario de un desarrollador calificado, así que sólo escoge el mejor para ti.
20+
Muchos IDEs son de paga, pero tienen un periodo de prueba. Su costo usualmente es pequeño si lo comparamos al salario de un desarrollador calificado, así que sólo escoge el mejor para ti.
2121

2222
## Editores livianos
2323

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

+12-10
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ El valor especial `undefined` también se distingue. Hace un tipo propio, igual
180180
181181
El significado de `undefined` es "valor no asignado".
182182
183-
Si una variable es declarada pero no asignada, entonces su valor es `undefined`:
183+
Si una variable es declarada, pero no asignada, entonces su valor es `undefined`:
184184
185185
```js run
186186
let age;
@@ -247,7 +247,7 @@ Las últimas tres líneas pueden necesitar una explicación adicional:
247247
248248
1. `Math` es un objeto incorporado que proporciona operaciones matemáticas. Lo aprenderemos en el capítulo <info:number>. Aquí sólo sirve como ejemplo de un objeto.
249249
2. El resultado de `typeof null` es `"object"`. Esto está oficialmente reconocido como un error de comportamiento de `typeof` que proviene de los primeros días de JavaScript y se mantiene por compatibilidad. Definitivamente `null` no es un objeto. Es un valor especial con un tipo propio separado.
250-
3. El resultado de `typeof alert` es `"function"` porque `alert` es una función. Estudiaremos las funciones en los próximos capítulos donde veremos que no hay ningún tipo especial "function" en JavaScript. Las funciones pertenecen al tipo objeto. Pero `typeof` las trata de manera diferente, devolviendo `function`. Además proviene de los primeros días de JavaScript. Técnicamente dicho comportamiento es incorrecto pero puede ser conveniente en la práctica.
250+
3. El resultado de `typeof alert` es `"function"` porque `alert` es una función. Estudiaremos las funciones en los próximos capítulos donde veremos que no hay ningún tipo especial "function" en JavaScript. Las funciones pertenecen al tipo objeto. Pero `typeof` las trata de manera diferente, devolviendo `function`. Además proviene de los primeros días de JavaScript. Técnicamente dicho comportamiento es incorrecto, pero puede ser conveniente en la práctica.
251251

252252
```smart header="Sintaxis de `typeof(x)`"
253253
Se puede encontrar otra sintaxis en algún código: `typeof(x)`. Es lo mismo que `typeof x`.
@@ -263,14 +263,16 @@ Algunos prefieren `typeof(x)`, aunque la sintaxis `typeof x` es mucho más comú
263263

264264
Hay 8 tipos básicos en JavaScript.
265265

266-
- `number` para números de cualquier tipo: enteros o de punto flotante, los enteros están limitados por <code>±(2<sup>53</sup>-1)</code>.
267-
- `bigint` para números enteros de longitud arbitraria.
268-
- `string` para cadenas. Una cadena puede tener cero o más caracteres, no hay un tipo especial para un único carácter.
269-
- `boolean` para verdadero y falso: `true`/`false`.
270-
- `null` para valores desconocidos -- un tipo independiente que tiene un solo valor nulo: `null`.
271-
- `undefined` para valores no asignados -- un tipo independiente que tiene un único valor "indefinido": `undefined`.
272-
- `object` para estructuras de datos complejas.
273-
- `symbol` para identificadores únicos.
266+
- Siete tipos de datos primitivos
267+
- `number` para números de cualquier tipo: enteros o de punto flotante, los enteros están limitados por <code>±(2<sup>53</sup>-1)</code>.
268+
- `bigint` para números enteros de longitud arbitraria.
269+
- `string` para cadenas. Una cadena puede tener cero o más caracteres, no hay un tipo especial para un único carácter.
270+
- `boolean` para verdadero y falso: `true`/`false`.
271+
- `null` para valores desconocidos -- un tipo independiente que tiene un solo valor nulo: `null`.
272+
- `undefined` para valores no asignados -- un tipo independiente que tiene un único valor "indefinido": `undefined`.
273+
- `symbol` para identificadores únicos.
274+
- Y un tipo de dato no primitivo:
275+
- `object` para estructuras de datos complejas.
274276

275277
El operador `typeof` nos permite ver qué tipo está almacenado en una variable.
276278

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ Esto ocurre solo si al menos uno de los argumentos es un string, en caso contrar
9898

9999
La conversión a boolean es la más simple.
100100

101-
Ocurre en operaciones lógicas (más adelante veremos test condicionales y otras cosas similares) pero también puede realizarse de forma explícita llamando a la función `Boolean(value)`.
101+
Ocurre en operaciones lógicas (más adelante veremos test condicionales y otras cosas similares), pero también puede realizarse de forma explícita llamando a la función `Boolean(value)`.
102102

103103
Las reglas de conversión:
104104

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@ let a = counter++; // (*) cambiado ++counter a counter++
366366
alert(a); // *!*1*/!*
367367
```
368368

369-
En la línea `(*)`, la forma *sufijo* `counter++` también incrementa `counter` pero devuelve el *antiguo* valor (antes de incrementar). Por lo tanto, el `alert` muestra `1`.
369+
En la línea `(*)`, la forma *sufijo* `counter++` también incrementa `counter`, pero devuelve el *antiguo* valor (antes de incrementar). Por lo tanto, el `alert` muestra `1`.
370370

371371
Para resumir:
372372

@@ -384,7 +384,7 @@ Para resumir:
384384
let counter = 0;
385385
alert( ++counter ); // 1
386386
```
387-
- Si queremos incrementar un valor pero usamos su valor anterior, necesitamos la forma sufijo:
387+
- Si queremos incrementar un valor, pero usamos su valor anterior, necesitamos la forma sufijo:
388388

389389
```js run
390390
let counter = 0;
@@ -443,7 +443,7 @@ Estos operadores se usan muy raramente, cuando necesitamos manejar la representa
443443

444444
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.
445445

446-
El operador coma nos permite evaluar varias expresiones, dividiéndolas con una coma `,`. Cada una de ellas es evaluada pero sólo el resultado de la última es devuelto.
446+
El operador coma nos permite evaluar varias expresiones, dividiéndolas con una coma `,`. Cada una de ellas es evaluada, pero sólo el resultado de la última es devuelto.
447447

448448
Por ejemplo:
449449

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ En el ejemplo de arriba, se puede decir: "la función `showMessage` es declarada
186186
187187
## Valores predeterminados
188188
189-
Si una función es llamada pero no se le proporciona un argumento, su valor correspondiente se convierte en `undefined`.
189+
Si una función es llamada, pero no se le proporciona un argumento, su valor correspondiente se convierte en `undefined`.
190190
191191
Por ejemplo, la función mencionada anteriormente `showMessage(from, text)` se puede llamar con un solo argumento:
192192

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ alert( sayHi ); // muestra el código de la función
4848
*/!*
4949
```
5050

51-
Tenga en cuenta que la última línea no ejecuta la función, porque no hay paréntesis después de `sayHi`. Existen lenguajes de programación en los que cualquier mención del nombre de una función causa su ejecución pero JavaScript no funciona así.
51+
Tenga en cuenta que la última línea no ejecuta la función, porque no hay paréntesis después de `sayHi`. Existen lenguajes de programación en los que cualquier mención del nombre de una función causa su ejecución, pero JavaScript no funciona así.
5252

5353
En JavaScript, una función es un valor, por lo tanto podemos tratarlo como un valor. El código de arriba muestra su representación de cadena, que es el código fuente.
5454

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Como puedes ver, `(a, b) => a + b` significa una función que acepta dos argumen
4848
alert( double(3) ); // 6
4949
```
5050

51-
- Si no hay parámetros, los paréntesis estarán vacíos pero deben estar presentes:
51+
- Si no hay parámetros, los paréntesis estarán vacíos; pero deben estar presentes:
5252

5353
```js run
5454
let sayHi = () => alert("¡Hola!");

Diff for: 1-js/03-code-quality/01-debugging-chrome/article.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ Hay botones para esto en le panel superior derecho. Revisémoslos.
135135
Otro clic volverá a ejecutar otro comando, y así uno por uno, a través de todo el script.
136136

137137
<span class="devtools" style="background-position:-62px -192px"></span> -- "saltar paso": corre al comando siguiente, pero *no te metas en la función*, hotkey `key:F10`.
138-
: Similar a "siguiente paso" pero se comporta diferente si la siguiente sentencia es un llamado a función. Esto es: no una nativa como alert, sino una función nuestra.
138+
: Similar a "siguiente paso", pero se comporta diferente si la siguiente sentencia es un llamado a función. Esto es: no una nativa como alert, sino una función nuestra.
139139

140140
El comando "siguiente" entra y pausa en la primera línea, en cambio "saltar" ejecuta la función anidada de forma invisible, no mostrando el interior de la función.
141141

@@ -144,7 +144,7 @@ Hay botones para esto en le panel superior derecho. Revisémoslos.
144144
Es útil si no estamos interesados en ver lo que pasa dentro de la función llamada.
145145

146146
<span class="devtools" style="background-position:-4px -194px"></span> -- siguiente paso, hotkey `key:F11`.
147-
: Similar a "siguiente" pero se comporta diferente en las llamadas asincrónicas. Si apenas comienzas en javaScript, puedes ignorar esto por ahora pues no tenemos llamados asincrónicos aún.
147+
: Similar a "siguiente", pero se comporta diferente en las llamadas asincrónicas. Si apenas comienzas en javaScript, puedes ignorar esto por ahora pues no tenemos llamados asincrónicos aún.
148148

149149
Para el futuro, simplemente recuerda que "Siguiente" ignora las acciones asincrónicas tales como `setTimeout` (llamada a función programada), que se ejecutan después. The "Siguiente dentro" va al interior de su código, esperando por él si es necesario. Puedes ver el [DevTools manual](https://developers.google.com/web/updates/2018/01/devtools#async) para más detalles.
150150

Diff for: 1-js/03-code-quality/01-debugging-chrome/chrome-sources-console.svg

+1-1
Loading

Diff for: 1-js/03-code-quality/01-debugging-chrome/chrome-tabs.svg

+1-1
Loading

Diff for: 1-js/03-code-quality/03-comments/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ function pow(x, n) {
153153
Sin dichos comentarios, las siguientes situaciones son posibles:
154154
1. Tú (o tu compañero) abres el código escrito hace ya algún tiempo, y te das cuenta de que es "subóptimo".
155155
2. Piensas: "Que estúpido que era antes, y que inteligente que soy ahora", y lo reescribes utilizando la variante "más obvia y correcta".
156-
3. ...El impulso de reescribir era bueno. Pero en el proceso ves que la solución "más obvia" en realidad falla. Incluso recuerdas vagamente el porqué, porque ya lo intentaste hace mucho. Vuelves a la variante correcta pero has estado perdiendo el tiempo.
156+
3. ...El impulso de reescribir era bueno. Pero en el proceso ves que la solución "más obvia" en realidad falla. Incluso recuerdas vagamente el porqué, porque ya lo intentaste hace mucho. Vuelves a la variante correcta, pero has estado perdiendo el tiempo.
157157

158158
Los comentarios que explican la solución correcta son muy importantes. Nos ayudan a continuar el desarrollo de forma correcta.
159159

Diff for: 1-js/03-code-quality/05-testing-mocha/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ function pow(x, n) {
128128

129129
## Mejoramos el spec
130130

131-
Lo que hemos hecho es una trampa. La función no funciona bien: ejecutar un cálculo diferente como `pow(3,4)` nos devuelve un resultado incorrecto pero el test pasa.
131+
Lo que hemos hecho es una trampa. La función no funciona bien: ejecutar un cálculo diferente, como `pow(3,4)`, nos devuelve un resultado incorrecto, pero el test pasa.
132132

133133
... pero la situación es habitual, ocurre en la práctica. Los tests pasan, pero la función no funciona bien. Nuestra especificación está incompleta. Necesitamos añadir más casos de uso a la especificación.
134134

Diff for: 1-js/04-object-basics/02-object-copy/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ Puede parecer que la linea `(*)` ocasionaría un error, pero no. El valor de `u
248248

249249
En otras palabras, `const user` solamente da error cuando intentamos asignar `user=...` como un todo.
250250

251-
Si realmente queremos hacer constantes las propiedades del objeto, es también posible pero usando métodos totalmente diferentes, las veremos después en el capítulo <info:property-descriptors>.
251+
Si realmente queremos hacer constantes las propiedades del objeto, también es posible; pero usando métodos totalmente diferentes, los que veremos después en el capítulo <info:property-descriptors>.
252252
````
253253

254254
## Resumen

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ alert(user.address ? user.address.street : undefined);
4646

4747
Esto funciona, no hay error... Pero es bastante poco elegante. Como puedes ver, `"user.address"` aparece dos veces en el código.
4848

49-
Aquí, el mismo caso pero con la búsqueda de `document.querySelector`:
49+
El mismo caso, pero con la búsqueda de `document.querySelector`:
5050

5151
```js run
5252
let html = document.querySelector('.elem') ? document.querySelector('.elem').innerHTML : null;

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ let id = Symbol("id");
3131

3232
Se garantiza que los símbolos son únicos. Aunque declaremos varios Symbols con la misma descripción, éstos tendrán valores distintos. La descripción es solamente una etiqueta que no afecta nada más.
3333

34-
Por ejemplo, aquí hay dos Symbols con la misma descripción -- pero no son iguales:
34+
Por ejemplo, aquí hay dos Symbols con la misma descripción... pero no son iguales:
3535

3636
```js run
3737
let id1 = Symbol("id");

Diff for: 1-js/05-data-types/02-number/9-random-int-min-max/solution.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# La solución simple pero equivocada
1+
# La solución simple, pero equivocada
22

33
La solución más simple, pero equivocada, sería generar un valor entre `min` y `max` y redondearlo:
44

Diff for: 1-js/05-data-types/02-number/article.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -448,4 +448,4 @@ Para números con decimales:
448448

449449
Más funciones matemáticas:
450450

451-
- Revisa el documento del objeto [Math](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math) cuando las necesites. La biblioteca es pequeña pero puede cubrir las necesidades básicas.
451+
- Revisa el documento del objeto [Math](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Math) cuando las necesites. La biblioteca es pequeña, pero puede cubrir las necesidades básicas.

Diff for: 1-js/05-data-types/03-string/article.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ while (true) {
266266
}
267267
```
268268

269-
Podemos escribir el mismo algoritmo pero más corto:
269+
Podemos escribir el mismo algoritmo, pero más corto:
270270

271271
```js run
272272
let str = 'Astuto como un zorro, fuerte como un buey';
@@ -296,9 +296,9 @@ if (str.indexOf("Widget")) {
296296
}
297297
```
298298

299-
La `alerta` en el ejemplo anterior no se muestra ya que `str.indexOf("Widget")` retorna `0` (lo que significa que encontró el string en la posición inicial). Correcto pero `if` considera `0` como `falso`.
299+
La `alerta` en el ejemplo anterior no se muestra ya que `str.indexOf("Widget")` retorna `0` (lo que significa que encontró el string en la posición inicial). Eos correcto, pero `if` considera `0` como `falso`.
300300

301-
Por lo que debemos buscar por `-1` como sigue:
301+
Por ello debemos buscar por `-1` como sigue:
302302

303303
```js run
304304
let str = "Widget con id";
@@ -353,7 +353,7 @@ Ahora podemos ver este truco solo en código viejo, porque JavaScript moderno pr
353353

354354
El método más moderno [str.includes(substr, pos)](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/includes) retorna `true/false` dependiendo si `str` contiene `substr` dentro.
355355

356-
Es la opción correcta si lo que necesitamos es encontrar el `substr` pero no necesitamos la posición.
356+
Es la opción correcta, si lo que necesitamos es encontrar el `substr` pero no necesitamos su posición.
357357

358358
```js run
359359
alert('Widget con id'.includes('Widget')); // true

Diff for: 1-js/05-data-types/05-array-methods/11-array-unique/solution.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ let strings = ["Hare", "Krishna", "Hare", "Krishna",
2222
alert( unique(strings) ); // Hare, Krishna, :-O
2323
```
2424

25-
El código funciona pero tiene un problema potencial de desempeño.
25+
El código funciona, pero tiene un problema potencial de desempeño.
2626

2727
El método `result.includes(str)` internamente recorre el array `result` y compara cada elemento con `str` para encontrar una coincidencia.
2828

Diff for: 1-js/05-data-types/05-array-methods/9-shuffle/solution.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,19 @@ Un resultado de ejemplo (depende del motor JS):
5858

5959
Podemos ver una clara tendencia: `123` y `213` aparecen mucho más seguido que otros.
6060

61-
El resultado del código puede variar entre distintos motores JavaScript pero ya podemos ver que esta forma de abordar el problema es poco confiable.
61+
El resultado del código puede variar entre distintos motores JavaScript, pero ya podemos ver que esta forma de abordar el problema es poco confiable.
6262

6363
¿Por qué no funciona? Generalmente hablando, `sort` es una "caja negra": tiramos dentro un array y una función de ordenamiento y esperamos que el array se ordene. Pero debido a la total aleatoriedad de la comparación, la caja negra se vuelve loca y exactamente en que sentido se vuelve loca depende de la implementación específica, que difiere de un motor a otro.
6464

65-
Existen otra formas mejores de realizar la tarea. Por ejemplo, hay un excelente algorítmo llamado [Algoritmo de Fisher-Yates](https://es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates). La idea es recorrer el array en sentido inverso e intercambiar cada elemento con un elemento aleatorio anterior:
65+
Existen otra formas mejores de realizar la tarea. Por ejemplo, hay un excelente algoritmo llamado [Algoritmo de Fisher-Yates](https://es.wikipedia.org/wiki/Algoritmo_de_Fisher-Yates). La idea es recorrer el array en sentido inverso e intercambiar cada elemento con un elemento aleatorio anterior:
6666

6767
```js
6868
function shuffle(array) {
6969
for (let i = array.length - 1; i > 0; i--) {
7070
let j = Math.floor(Math.random() * (i + 1)); // índice aleatorio entre 0 e i
7171

7272
// intercambia elementos array[i] y array[j]
73-
// usamos la sintáxis "asignación de desestructuración" para lograr eso
73+
// usamos la sintaxis "asignación de desestructuración" para lograr eso
7474
// encontrarás más información acerca de esa sintaxis en los capítulos siguientes
7575
// lo mismo puede ser escrito como:
7676
// let t = array[i]; array[i] = array[j]; array[j] = t

0 commit comments

Comments
 (0)