Skip to content

Commit 299b792

Browse files
authored
Merge pull request #635 from joaquinelio/susy220621
Susy220621
2 parents 58d5b3f + 5a02ee7 commit 299b792

File tree

32 files changed

+240
-121
lines changed

32 files changed

+240
-121
lines changed

1-js/01-getting-started/1-intro/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,17 +106,17 @@ Las herramientas modernas hacen la conversión (Transpilación) muy rápida y tr
106106

107107
Ejemplos de tales lenguajes:
108108

109-
- [CoffeeScript](http://coffeescript.org/) Es una "sintaxis azucarada" para JavaScript. Introduce una sintaxis corta, permitiéndonos escribir un código mas claro y preciso. Usualmente desarrolladores de Ruby prefieren este lenguaje.
110-
- [TypeScript](http://www.typescriptlang.org/) se concentra en agregar "tipado estricto" ("strict data typing") para simplificar el desarrollo y soporte de sistemas complejos. Es desarrollado por Microsoft.
109+
- [CoffeeScript](https://coffeescript.org/) Es una "sintaxis azucarada" para JavaScript. Introduce una sintaxis corta, permitiéndonos escribir un código mas claro y preciso. Usualmente desarrolladores de Ruby prefieren este lenguaje.
110+
- [TypeScript](https://www.typescriptlang.org/) se concentra en agregar "tipado estricto" ("strict data typing") para simplificar el desarrollo y soporte de sistemas complejos. Es desarrollado por Microsoft.
111111
- [FLow](https://flow.org/) también agrega la escritura de datos, pero de una manera diferente. Desarrollado por Facebook.
112-
- [Dart](https://www.dartlang.org/) es un lenguaje independiente que tiene su propio motor que se ejecuta en entornos que no son de navegador (como aplicaciones móviles), pero que también se puede convertir/transpilar a JavaScript. Desarrollado por Google.
112+
- [Dart](https://www.dartlang.org/) es un lenguaje independiente, tiene su propio motor que se ejecuta en entornos que no son de navegador (como aplicaciones móviles), pero que también se puede convertir/transpilar a JavaScript. Desarrollado por Google.
113113
- [Brython](https://brython.info/) es un transpilador de Python a JavaScript que permite escribir aplicaciones en Python puro sin JavaScript.
114114
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) es un lenguaje moderno, seguro y conciso que puede apuntar al navegador o a Node.
115115

116116
Hay más. Por supuesto, incluso si nosotros usamos alguno de estos lenguajes, deberíamos conocer también JavaScript para realmente entender qué estamos haciendo.
117117

118118
## Resumen
119119

120-
- JavaScript fue inicialmente creado como un lenguaje solo para el navegador, pero ahora es usado también en muchos otros entornos.
120+
- JavaScript fue inicialmente creado como un lenguaje solamente para el navegador, pero ahora es usado también en muchos otros entornos.
121121
- Hoy en día, JavaScript tiene una posición única como el lenguaje más extendido y adoptado de navegador, con una integración completa con HTML y CSS.
122122
- Existen muchos lenguajes que se convierten o transpilan a JavaScript y aportan ciertas características. Es recomendable echarles un vistazo, al menos brevemente, después de dominar JavaScript.

1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ JavaScript es un lenguaje en evolución, nuevas características son adicionadas
2929

3030
Para ver la compatibilidad por navegador y otros motores, consultar:
3131

32-
- <http://caniuse.com> - tablas de compatibilidad por característica, e.g. para comprobar qué motores soportan funciones modernas de criptografía: <http://caniuse.com/#feat=cryptography>.
32+
- <https://caniuse.com> - tablas de compatibilidad por característica, p.ej. para comprobar qué motores soportan funciones modernas de criptografía: <https://caniuse.com/#feat=cryptography>.
3333
- <https://kangax.github.io/compat-table> - tabla que muestra la compatibilidad o no de las prestaciones del lenguaje por motor.
3434

3535
Todos estos recursos son de utilidad para el desarrollo con JavaScript, ya que incluyen información valiosa sobre los detalles del lenguaje, su compatibilidad, etc.

1-js/02-first-steps/04-variables/article.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ let message = 'Hola';
6464
```
6565

6666
Algunas personas también definen variables múltiples en estilo multilínea:
67+
6768
```js no-beautify
6869
let user = 'John',
6970
age = 25,
@@ -103,6 +104,7 @@ Por ejemplo, podemos imaginar la variable `message` como una caja etiquetada `"m
103104
Podemos introducir cualquier valor a la caja.
104105
105106
También la podemos cambiar cuantas veces queramos:
107+
106108
```js run
107109
let message;
108110
@@ -172,7 +174,7 @@ let test123;
172174

173175
Cuando el nombre contiene varias palabras, comúnmente se utiliza [camelCase](https://es.wikipedia.org/wiki/Camel_case). Es decir: palabras van una detrás de otra, con cada palabra iniciando con letra mayúscula: `miNombreMuyLargo`.
174176

175-
Es interesante notar -- el símbolo del dólar `'$'` y el guión bajo `'_'` también se utilizan en nombres. Son símbolos comunes, tal como las letras, sin ningún significado especial.
177+
Es interesante notar que el símbolo del dólar `'$'` y el guion bajo `'_'` también se utilizan en nombres. Son símbolos comunes, tal como las letras, sin ningún significado especial.
176178

177179
Los siguientes nombres son válidos:
178180

@@ -260,7 +262,6 @@ myBirthday = '01.01.2001'; // ¡error, no se puede reasignar la constante!
260262
261263
Cuando un programador está seguro de que una variable nunca cambiará, puede declarar la variable con `const` para garantizar y comunicar claramente este hecho a todos.
262264
263-
264265
### Constantes mayúsculas
265266
266267
Existe una práctica utilizada ampliamente de utilizar constantes como aliases de valores difíciles-de-recordar y que se conocen previo a la ejecución.
@@ -291,6 +292,7 @@ Ventajas:
291292
Ser una "constante" solo significa que el valor de la variable nunca cambia. Pero hay constantes que son conocidas previo a la ejecución (como el valor hexadecimal del color rojo) y hay constantes que son *calculadas* en el tiempo de ejecución, pero no cambian después de su asignación inicial.
292293
293294
Por ejemplo:
295+
294296
```js
295297
const pageLoadTime = /* el tiempo que tardó la página web para cargar */;
296298
```
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
La respuesta: `null`, porque es el primer valor falso de la lista.
22

33
```js run
4-
alert( 1 && null && 2 );
4+
alert(1 && null && 2);
55
```
66

1-js/02-first-steps/13-while-for/article.md

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,19 @@ Por ejemplo, mostrar los elementos de una lista uno tras otro o simplemente ejec
66

77
Los *Bucles* son una forma de repetir el mismo código varias veces.
88

9+
```smart header="Los bucles for..of y for..in"
10+
Un pequeño anuncio para lectores avanzados.
11+
12+
Este artículo cubre solamente los bucles básicos: `while`, `do..while` y `for(..;..;..)`.
13+
14+
Si llegó a este artículo buscando otro tipo de bucles, aquí están los enlaces:
15+
16+
- Vea [for..in](info:object#forin) para bucles sobre propiedades de objetos.
17+
- Vea [for..of](info:array#loops) e [iterables](info:iterable) para bucles sobre arrays y objetos iterables.
18+
19+
De otra manera, por favor continúe leyendo.
20+
```
21+
922
## El bucle "while"
1023

1124
El bucle `while` (mientras) tiene la siguiente sintaxis:
@@ -159,10 +172,8 @@ for (i = 0; i < 3; i++) { // usa una variable existente
159172
160173
alert(i); // 3, visible, porque fue declarada fuera del bucle
161174
```
162-
163175
````
164176

165-
166177
### Omitiendo partes
167178

168179
Cualquier parte de `for` puede ser omitida.
@@ -283,7 +294,6 @@ if (i > 5) {
283294
284295
...y lo reescribimos usando un signo de interrogación:
285296
286-
287297
```js no-beautify
288298
(i > 5) ? alert(i) : *!*continue*/!*; // continue no está permitida aquí
289299
```
@@ -319,7 +329,8 @@ Necesitamos una manera de detener el proceso si el usuario cancela la entrada.
319329

320330
El `break` ordinario después de `input` solo nos sacaría del bucle interno. Eso no es suficiente. ¡Etiquetas, vengan al rescate!
321331

322-
Una *etiqueta* es un identificador con un ":" antes de un bucle:
332+
Una *etiqueta* es un identificador con un signo de dos puntos ":" antes de un bucle:
333+
323334
```js
324335
labelName: for (...) {
325336
...
@@ -341,6 +352,7 @@ La declaración `break <labelName>` en el bucle debajo nos saca hacia la etiquet
341352
// hacer algo con el valor...
342353
}
343354
}
355+
344356
alert('Listo!');
345357
```
346358

@@ -361,13 +373,15 @@ La directiva `continue` también puede usar usada con una etiqueta. En este caso
361373
Las etiquetas no nos permiten saltar a un lugar arbitrario en el código.
362374
363375
Por ejemplo, es imposible hacer esto:
376+
364377
```js
365378
break label; // ¿saltar a label? No funciona.
366379
367380
label: for (...)
368381
```
369382
370-
Una directiva `break` debe estar en el interior del bucle. Técnicamente, cualquier bloque de código etiquetado:
383+
Una directiva `break` debe estar en el interior del bucle. Aunque, técnicamente, puede estar en cualquier bloque de código etiquetado:
384+
371385
```js
372386
label: {
373387
// ...

1-js/03-code-quality/03-comments/article.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -125,21 +125,21 @@ Describe la arquitectura
125125
Documenta la utilización de una función
126126
: Hay una sintaxis especial [JSDoc](https://en.wikipedia.org/wiki/JSDoc) para documentar una función: utilización, parámetros, valor devuelto.
127127

128-
Por ejemplo:
129-
```js
130-
/**
131-
* Devuelve x elevado a la potencia de n.
132-
*
133-
* @param {number} x El número a elevar.
134-
* @param {number} n La potencia, debe ser un número natural.
135-
* @return {number} x elevado a la potencia de n.
136-
*/
137-
function pow(x, n) {
138-
...
139-
}
140-
```
128+
Por ejemplo:
129+
```js
130+
/**
131+
* Devuelve x elevado a la potencia de n.
132+
*
133+
* @param {number} x El número a elevar.
134+
* @param {number} n La potencia, debe ser un número natural.
135+
* @return {number} x elevado a la potencia de n.
136+
*/
137+
function pow(x, n) {
138+
...
139+
}
140+
```
141141

142-
Estos tipos de comentarios nos permiten entender el propósito de la función y cómo usarla de la manera correcta sin mirar su código.
142+
Este tipo de comentarios nos permite entender el propósito de la función y cómo usarla de la manera correcta sin tener que examinar su código.
143143

144144
Por cierto, muchos editores como [WebStorm](https://www.jetbrains.com/webstorm/) también pueden entenderlos y usarlos para proveer auto completado y algún tipo de verificación automática para el código.
145145

1-js/04-object-basics/01-object/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ En el código anterior, la propiedad `obj.test` técnicamente existe. Entonces
355355
Situaciones como esta suceden raramente ya que `undefined` no debe ser explícitamente asignado. Comúnmente usamos `null` para valores "desconocidos" o "vacíos". Por lo que el operador `in` es un invitado exótico en nuestro código.
356356
357357
358-
## El bucle "for..in"
358+
## El bucle "for..in" [#forin]
359359
360360
Para recorrer todas las claves de un objeto existe una forma especial de bucle: `for..in`. Esto es algo completamente diferente a la construcción `for(;;)` que estudiaremos más adelante.
361361

1-js/04-object-basics/03-garbage-collection/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ Hay otras optimizaciones y tipos de algoritmos de recolección de basura. Por mu
197197

198198
Los principales puntos a saber:
199199

200-
- La reecolección de basura se ejecuta automáticamente. No la podemos forzar o evitar.
200+
- La recolección de basura se ejecuta automáticamente. No la podemos forzar o evitar.
201201
- Los objetos se retienen en la memoria mientras son accesibles.
202202
- Ser referenciado no es lo mismo que ser accesible (desde una raíz): un conjunto de objetos interconectados pueden volverse inalcanzables como un todo, como vimos en el ejemplo de arriba.
203203

1-js/04-object-basics/04-object-methods/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ user = {
9090

9191
Como se demostró, podemos omitir `"function"` y simplemente escribir `sayHi()`.
9292

93-
A decir verdad, las notaciones no son completamente idénticas. Hay diferencias sutiles relacionadas a la herencia de objetos (por cubrir más adelante) que no importan ahora. En casi todos los casos la sintaxis abreviada es la preferida.
93+
A decir verdad, las notaciones no son completamente idénticas. Hay diferencias sutiles relacionadas a la herencia de objetos (por cubrir más adelante) que por ahora no son relevantes. En casi todos los casos la sintaxis abreviada es la preferida.
9494

9595
## "this" en métodos
9696

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ En JavaScript moderno, hay dos tipos de números:
44

55
1. Los números regulares en JavaScript son almacenados con el formato de 64-bit [IEEE-754](https://es.wikipedia.org/wiki/IEEE_coma_flotante), conocido como "números de doble precisión de coma flotante". Estos números son los que estaremos usando la mayor parte del tiempo y hablaremos de ellos en este capítulo.
66

7-
2. Números BigInt , para representar enteros de longitud arbitraria. A veces son necesarios porque un número regular no puede exceder <code>2<sup>53</sup></code> ni ser menor a <code>-2<sup>53</sup></code> manteniendo la precisión. Como los bigints son usados en unas pocas áreas especiales, les dedicamos un capítulo especial <info:bigint>.
7+
2. Los números BigInt representan enteros de longitud arbitraria. A veces son necesarios porque un número regular no puede exceder <code>2<sup>53</sup></code> ni ser menor a <code>-2<sup>53</sup></code> manteniendo la precisión. Como los bigints son usados en algunas áreas especiales, les dedicamos un capítulo especial <info:bigint>.
88

99
Aquí hablaremos de números regulares. Ampliemos lo que ya sabemos de ellos.
1010

@@ -50,10 +50,10 @@ let mсs = 0.000001;
5050
Igual que antes, el uso de `"e"` puede ayudar. Si queremos evitar la escritura de ceros explícitamente, podríamos expresar lo mismo como:
5151

5252
```js
53-
let mcs = 1e-6; // seis ceros a la izquierda de 1
53+
let mcs = 1e-6; // cinco ceros a la izquierda de 1
5454
```
5555

56-
Si contamos los ceros en `0.000001`, hay 6 de ellos. Entonces naturalmente es `1e-6`.
56+
Si contamos los ceros en `0.000001`, hay 6 de ellos en total. Entonces naturalmente es `1e-6`.
5757

5858
En otras palabras, un número negativo detrás de `"e"` significa una división por el 1 seguido de la cantidad dada de ceros:
5959

@@ -63,6 +63,9 @@ En otras palabras, un número negativo detrás de `"e"` significa una división
6363

6464
// -6 divide por 1 con 6 ceros
6565
1.23e-6 === 1.23 / 1000000; // 0.00000123
66+
67+
// un ejemplo con un número mayor
68+
1234e-2 === 1234 / 100; // 12.34, el punto decimal se mueve 2 veces
6669
```
6770

6871
### Números hexadecimales, binarios y octales
@@ -305,7 +308,7 @@ Ambos pertenecen al tipo `number`, pero no son números "normales", así que hay
305308
alert( isNaN("str") ); // true
306309
```
307310

308-
Pero ¿necesitamos esta función? ¿No podemos simplemente usar la comparación `=== NaN`? Lo lamento pero la respuesta es no. El valor `NaN` es único en que no es igual a nada, incluyendo a sí mismo:
311+
Pero ¿necesitamos esta función? ¿No podemos simplemente usar la comparación `=== NaN`? Desafortunadamente no. El valor `NaN` es único en que no es igual a nada, incluyendo a sí mismo:
309312

310313
```js run
311314
alert( NaN === NaN ); // false
@@ -399,8 +402,8 @@ Unos ejemplos:
399402
alert( Math.random() ); // ... (cualquier número aleatorio)
400403
```
401404

402-
`Math.max(a, b, c...)` / `Math.min(a, b, c...)`
403-
: Devuelve el mayor/menor de entre una cantidad arbitraria de argumentos.
405+
`Math.max(a, b, c...)` y `Math.min(a, b, c...)`
406+
: Devuelven el mayor y el menor de entre una cantidad arbitraria de argumentos.
404407

405408
```js run
406409
alert( Math.max(3, 5, -10, 0, 1) ); // 5
@@ -429,6 +432,11 @@ Para sistemas numéricos diferentes:
429432
- `parseInt(str, base)` convierte un string a un entero en el sistema numérico de la `base` dada `base`, `2 ≤ base ≤ 36`.
430433
- `num.toString(base)` convierte un número a string en el sistema de la `base` dada.
431434

435+
Para tests de números regulares:
436+
437+
- `isNaN(value)` convierte su argumento a number y luego verifica si es `NaN`
438+
- `isFinite(value)` convierte su argumento a number y devuelve `true` si es un número regular, no `NaN/Infinity/-Infinity`
439+
432440
Para convertir valores como `12pt` y `100px` a un número:
433441

434442
- Usa `parseInt/parseFloat` para una conversión "suave", que lee un número desde un string y devuelve el valor del número que pudiera leer antes de encontrar error.

1-js/05-data-types/04-array/article.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ Para las pilas, la última introducida es la primera en ser recibida, en inglés
155155

156156
Los arrays en JavaScript pueden trabajar como colas o pilas. Ellos permiten agregar/quitar elementos al/del principio o al/del final.
157157

158-
En ciencias de la computación la estructura de datos que permite esto se denomina cola de doble extremo o [bicola](https://es.wikipedia.org/wiki/Bicola).
158+
En ciencias de la computación, la estructura de datos que permite esto se denomina cola de doble extremo o [bicola](https://es.wikipedia.org/wiki/Bicola).
159159

160160
**Métodos que trabajan sobre el final del array:**
161161

@@ -530,7 +530,7 @@ El llamado a `new Array(number)` crea un array con la longitud dada, pero sin el
530530
Obtener los elementos:
531531

532532
- Podemos obtener un elemento por su índice, como `arr[0]`
533-
- También podemos usar el método `at(i)`, que permite índices negativos. Para valores negativos de `i`, cuenta hacia atrás desde el final del array. Funciona igual que `arr[i]`, si `i >= 0`.
533+
- También podemos usar el método `at(i)`, que permite índices negativos. Para valores negativos de `i`, cuenta hacia atrás desde el final del array. Cuando `i >= 0`, funciona igual que `arr[i]`.
534534

535535
Podemos usar un array como una pila "deque" o "bicola" con las siguientes operaciones:
536536

0 commit comments

Comments
 (0)