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
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/04-variables/article.md
+19-19
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Variables
2
2
3
-
La mayoría del tiempo, una aplicación de JavaScript necesita trabajar con información. Aquí hay 2 ejemplos:
3
+
La mayor parte del tiempo, una aplicación JavaScript necesita trabajar con información. Dos ejemplos:
4
4
1. Una tienda en línea -- La información puede incluir los bienes a la venta y un "carrito de compras".
5
5
2. Una aplicación de chat -- La información puede incluir los usuarios, mensajes, y mucho más.
6
6
@@ -18,7 +18,7 @@ La siguiente declaración genera (en otras palabras: *declara* o *define*) una v
18
18
let message;
19
19
```
20
20
21
-
Ahora podemos introducir datos en ella al utilizar el operador de asignación `=`:
21
+
Ahora podemos introducir datos en ella, utilizando el operador de asignación `=`:
22
22
23
23
```js
24
24
let message;
@@ -47,7 +47,7 @@ let message = 'Hola!'; // define la variable y asigna un valor
47
47
alert(message); // Hola!
48
48
```
49
49
50
-
También podemos declarar variables múltiples en una sola línea:
50
+
También podemos declarar múltiples variables en una sola línea:
51
51
52
52
```js no-beautify
53
53
let user ='John', age =25, message ='Hola';
@@ -63,15 +63,15 @@ let age = 25;
63
63
let message ='Hola';
64
64
```
65
65
66
-
Algunas personas también definen variables múltiples en estilo multilínea:
66
+
Hay quienes prefieren definir múltiples variables en estilo multilínea:
67
67
68
68
```js no-beautify
69
69
let user ='John',
70
70
age =25,
71
71
message ='Hola';
72
72
```
73
73
74
-
...Incluso en este estilo "coma primero":
74
+
... o con el estilo "coma primero":
75
75
76
76
```js no-beautify
77
77
let user ='John'
@@ -97,7 +97,7 @@ Existen sutiles diferencias entre `let` y `var`, pero no nos interesan en este m
97
97
98
98
Podemos comprender fácilmente el concepto de una "variable" si nos la imaginamos como una "caja" con una etiqueta de nombre único pegada en ella.
99
99
100
-
Por ejemplo, podemos imaginar la variable `message` como una caja etiquetada `"message"` con el valor `"Hola!"` adentro:
100
+
Por ejemplo, la variable `message` puede ser imaginada como una caja etiquetada `"message"` con el valor `"Hola!"` dentro:
101
101
102
102

103
103
@@ -205,7 +205,7 @@ let имя = '...';
205
205
let 我 = '...';
206
206
```
207
207
208
-
Técnicamente, no existe ningún error aquí. Tales nombres están permitidos, pero existe una tradición internacional de utilizar inglés en el nombramiento de variables. Incluso si estamos escribiendo un script pequeño, este puede tener una larga vida por delante. Puede ser necesario que gente de otros países deba leerlo en algún momento.
208
+
Técnicamente, no existe error aquí. Tales nombres están permitidos, pero internacionalmente existe la convención de utilizar el inglés en el nombramiento de variables. Incluso si estamos escribiendo un script pequeño, este puede tener una larga vida por delante. Gente de otros países pueden necesitar leerlo en algún momento.
myBirthday = '01.01.2001'; // ¡error, no se puede reasignar la constante!
261
261
```
262
262
263
-
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.
263
+
Cuando un programador está seguro de que una variable nunca cambiará, puede declararla con `const` para garantizar esto y comunicarlo claramente a los demás.
264
264
265
265
### Constantes mayúsculas
266
266
@@ -297,9 +297,9 @@ Por ejemplo:
297
297
const pageLoadTime = /* el tiempo que tardó la página web para cargar */;
298
298
```
299
299
300
-
El valor de `pageLoadTime` no se conoce antes de cargar la página, así que la nombramos normalmente. No obstante, es una constante porque no cambia después de su asignación inicial.
300
+
El valor de `pageLoadTime` no está preestablecido. Como no se conoce antes de cargar la página, la nombramos normalmente. Pero podemos declararla como constante, porque después de su asignación inicial, no cambiará.
301
301
302
-
En otras palabras, las constantes con nombres en mayúscula son utilizadas solamente como alias para valores invariables y preestablecidos ("hard-coded").
302
+
En otras palabras, las constantes en mayúsculas son utilizadas solamente como alias para valores invariables y preestablecidos (o "hard-coded").
303
303
304
304
## Nombrar cosas correctamente
305
305
@@ -309,16 +309,16 @@ Una variable debe tener un nombre claro, de significado evidente, que describa e
309
309
310
310
Nombrar variables es una de las habilidades más importantes y complejas en la programación. Un vistazo rápido a el nombre de las variables nos revela cuál código fue escrito por un principiante o por un desarrollador experimentado.
311
311
312
-
En un proyecto real, la mayor parte de el tiempo se pasa modificando y extendiendo una base de código en vez de empezar a escribir algo desde cero. Cuando regresamos a algún código después de hacer algo distinto por un rato, es mucho más fácil encontrar información que está bien etiquetada. O, en otras palabras, cuando las variables tienen nombres adecuados.
312
+
En un proyecto real, se pasa mucho más tiempo modificando y extendiendo una base de código existente que escribiendo algo nuevo desde cero. Cuando regresamos a nuestro código luego de un tiempo, es mucho más fácil encontrar información que está bien etiquetada. O en otras palabras, cuando las variables tienen los nombres adecuados.
313
313
314
-
Por favor pasa tiempo pensando en el nombre adecuado para una variable antes de declararla. Hacer esto te da un retorno muy sustancial.
314
+
Por favor, dedica tiempo para pensar un nombre correcto para una variable antes de declararla. Hacer esto te rendirá muy bien.
315
315
316
316
Algunas reglas buenas para seguir:
317
317
318
-
- Use términos legibles para humanos como `userName` p `shoppingCart`.
319
-
- Evite abreviaciones o nombres cortos `a`, `b`, `c`, al menos que en serio sepa lo que está haciendo.
320
-
- Cree nombres que describen al máximo lo que son y sean concisos. Ejemplos que no son adecuados son `data` y `value`. Estos nombres no nos dicen nada. Estos solo está bien usarlos en el contexto de un código que deje excepcionalmente obvio cuál valor o cuales datos está referenciando la variable.
321
-
- Acuerda en tu propia mente y con tu equipo cuáles términos se utilizarán. Si a un visitante se le llamara "user", debemos llamar las variables relacionadas `currentUser` o `newUser` en vez de `currentVisitor` o `newManInTown`.
318
+
- Usa términos legibles para humanos como `userName` p `shoppingCart`.
319
+
- Evita abreviaciones o nombres cortos `a`, `b`, `c`, a menos que realmente sepas lo que estás haciendo.
320
+
- Crea nombres que describan al máximo lo que son y sean concisos. Ejemplos de nombres malos son `data` y `value`. Estos nombres no nos dicen nada, solo son adecuados en el contexto de un código que deje excepcionalmente obvio cuál dato o valor está referenciando la variable.
321
+
- Ponte de acuerdo con tu equipo, y con tu propia mente, cuáles términos se utilizarán. Si a un visitante se lo llamara "user", debemos llamar las variables relacionadas `currentUser` o `newUser` en vez de `currentVisitor` o `newManInTown`.
322
322
323
323
¿Suena simple? De hecho lo es, pero no es tan fácil crear nombres de variables descriptivos y concisos a la hora de practicar. Inténtelo.
324
324
@@ -329,9 +329,9 @@ El resultado de esto es que sus variables son como cajas en las cuales la gente
329
329
330
330
Dichos programadores se ahorran un poco durante la declaración de la variable, pero pierden diez veces más a la hora de depuración.
331
331
332
-
Una variable extra es algo bueno, no algo malvado.
332
+
Una variable extra es algo bueno, no algo diabólico.
333
333
334
-
Los minificadores de JavaScript moderno, y los navegadores optimizan el código suficientemente bien para no generar cuestiones de rendimiento. Utilizar diferentes variables para distintos valores incluso puede ayudar a optimizar su código
334
+
Los navegadores modernos y los minificadores de JavaScript optimizan el código, así que esto no impacta en el rendimiento. Utilizar diferentes variables para distintos valores incluso puede ayudar a optimizar tu código.
335
335
```
336
336
337
337
## Resumen
@@ -340,6 +340,6 @@ Podemos declarar variables para almacenar datos al utilizar las palabra clave `v
340
340
341
341
- `let` -- es la forma moderna de declaración de una variable.
342
342
- `var` -- es la declaración de variable de vieja escuela. Normalmente no lo utilizamos en absoluto. Cubriremos sus sutiles diferencias con `let` en el capítulo <info:var>, por si lo necesitaras.
343
-
- `const` -- es como `let`, pero el valor de la variable no puede ser alterado.
343
+
- `const` -- es como `let`, pero una vez asignado, el valor de la variable no podrá alterarse.
344
344
345
345
Las variables deben ser nombradas de tal manera que entendamos fácilmente lo que está en su interior.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
+4-3
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Los equipos de desarrollo detrás de los intérpretes (engines) de JavaScript ti
7
7
8
8
Por lo tanto, es bastante común para un intérprete implementar solo parte del estándar.
9
9
10
-
Una buena página para ver el estado actual de soporte de características del lenguaje es <https://kangax.github.io/compat-table/es6/> (es grande, todavía tenemos mucho que aprender).
10
+
Una buena página para ver el estado actual de soporte de características del lenguaje es <https://compat-table.github.io/compat-table/es6/> (es grande, todavía tenemos mucho que aprender).
11
11
12
12
Como programadores, queremos las características más recientes. Cuanto más, ¡mejor!
13
13
@@ -72,7 +72,8 @@ if (!Math.trunc) { // no existe tal función
72
72
JavaScript es un lenguaje muy dinámico, los scripts pueden agregar o modificar cualquier función, incluso las integradas.
73
73
74
74
Una librería interesante de polyfills es:
75
-
- [core js](https://github.com/zloirock/core-js) - da muchísimo soporte, pero sin sobrecargar, ya que permite incluir solo las características necesarias.
75
+
- [core js](https://github.com/zloirock/core-js) - brinda muchísimo soporte, pero permite incluir solo las características necesarias.
76
+
76
77
77
78
## Resumen
78
79
@@ -83,7 +84,7 @@ Pero no olvides usar transpiladores (si usas sintaxis u operadores modernos) y p
83
84
Por ejemplo, cuando estés más familiarizado con JavaScript puedes configurar la construcción de código basado en [webpack](https://webpack.js.org/) con el plugin [babel-loader](https://github.com/babel/babel-loader).
84
85
85
86
Buenos recursos que muestran el estado actual de soporte para varias característica:
86
-
- <https://kangax.github.io/compat-table/es6/> - para JavaScript puro.
87
+
- <https://compat-table.github.io/compat-table/es6/> - para JavaScript puro.
87
88
- <https://caniuse.com/> - para funciones relacionadas al navegador.
88
89
89
90
P.S. Google Chrome usualmente es el más actualizado con las características del lenguaje, pruébalo si algún demo del tutorial falla. Aunque la mayoría de los demos funciona con cualquier navegador moderno.
Copy file name to clipboardExpand all lines: 1-js/05-data-types/02-number/article.md
+18-10
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ En JavaScript moderno, hay dos tipos de números:
4
4
5
5
1. Los números regulares en JavaScript son almacenados con el formato de 64-bit [IEEE-754](https://es.wikipedia.org/wiki/IEEE_754), 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.
6
6
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, algo que mencionamos antes en el capítulo <info:types>. Como los bigints son usados en algunas á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 entero regular no puede exceder <code>2<sup>53</sup></code> ni ser menor a <code>-2<sup>53</sup></code> manteniendo la precisión, algo que mencionamos antes en el capítulo <info:types>. Como los bigints son usados en áreas muy especiales, les dedicamos un capítulo especial <info:bigint>.
8
8
9
9
Aquí hablaremos de números regulares. Ampliemos lo que ya sabemos de ellos.
10
10
@@ -107,9 +107,9 @@ La `base` puede variar entre `2` y `36`. La predeterminada es `10`.
107
107
108
108
Casos de uso común son:
109
109
110
-
-**base=16** usada para colores hex, codificación de caracteres, etc; los dígitos pueden ser `0..9` o `A..F`.
111
-
-**base=2** mayormente usada para el debug de operaciones de bit, los dígitos pueden ser `0` o `1`.
112
-
-**base=36** Es el máximo, los dígitos pueden ser `0..9` o `A..Z`. Aquí el alfabeto inglés completo es usado para representar un número. Un uso peculiar pero práctico para la base `36` es cuando necesitamos convertir un largo identificador numérico en algo más corto, por ejemplo para abreviar una url. Podemos simplemente representarlo en el sistema numeral de base `36`:
110
+
-**base=16** usada para colores en hexa, codificación de caracteres, etc.; los dígitos pueden ser `0..9` o `A..F`.
111
+
-**base=2** mayormente usada para la depuración de operaciones de bit, los dígitos pueden ser `0` o `1`.
112
+
-**base=36** Es la base máxima, los dígitos pueden ser `0..9` o `A..Z`. Aquí el alfabeto inglés completo es usado para representar un número. Un uso peculiar pero práctico para la base `36` es cuando necesitamos convertir un largo identificador numérico en algo más corto, por ejemplo para abreviar una url. Podemos simplemente representarlo en el sistema numeral de base `36`:
113
113
114
114
```js run
115
115
alert( 123456..toString(36) ); // 2n9c
@@ -137,7 +137,7 @@ Hay varias funciones incorporadas para el redondeo:
137
137
: Redondea hacia arriba:`3.1` torna en `4`, y `-1.1` torna en `-1`.
138
138
139
139
`Math.round`
140
-
: Redondea hacia el entero más cercano:`3.1` redondea a `3`, `3.6` redondea a `4`, el caso medio`3.5` redondea a `4` también.
140
+
: Redondea hacia el entero más cercano:`3.1` redondea a `3`, `3.6` redondea a `4`; los casos medios`3.5` redondea a `4`, y `-3.5` redondea a `-3`.
141
141
142
142
`Math.trunc` (no soportado en Internet Explorer)
143
143
: Remueve lo que haya tras el punto decimal sin redondear:`3.1` torna en `3`, `-1.1` torna en `-1`.
@@ -147,8 +147,10 @@ Aquí, la tabla que resume las diferencias entre ellos:
Un número es almacenado en memoria en su forma binaria, una secuencia de bits, unos y ceros. Pero decimales como `0.1`, `0.2` que se ven simples en el sistema decimal son realmente fracciones sin fin en su forma binaria.
224
226
225
-
¿Qué es `0.1`? Es un uno dividido por 10`1/10`, un décimo. En sistema decimal es fácilmente representable. Compáralo con un tercio:`1/3`, se vuelve una fracción sin fin `0.33333(3)`.
¿Qué es `0.1`? Es un uno dividido por 10, `1/10`, un décimo. En sistema decimal es fácilmente representable. Compáralo con un tercio:`1/3`, que se vuelve una fracción sin fin `0.33333(3)`.
226
234
227
235
Así, la división en potencias de diez garantizan un buen funcionamiento en el sistema decimal, pero divisiones por `3`no. Por la misma razón, en el sistema binario la división en potencias de `2` garantizan su funcionamiento, pero `1/10` se vuelve una fracción binaria sin fin.
Y cuando sumamos dos números, se apilan sus "pérdidas de precisión".
246
+
Y cuando sumamos dos números, sus "pérdidas de precisión" se acumulan.
239
247
240
248
Y es por ello que `0.1 + 0.2` no es exactamente `0.3`.
241
249
242
250
```smart header="No solo JavaScript"
243
251
El mismo problema existe en muchos otros lenguajes de programación.
244
252
245
-
PHP, Java, C, Perl, Ruby dan exactamente el mismo resultado, porque ellos están basados en el mismo formato numérico.
253
+
PHP, Java, C, Perl, Ruby, dan exactamente el mismo resultado, porque ellos están basados en el mismo formato numérico.
246
254
```
247
255
248
256
¿Podemos resolver el problema? Seguro, la forma más confiable es redondear el resultado con la ayuda de un método. [toFixed(n)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed):
@@ -348,7 +356,7 @@ Los métodos [Number.isNaN](https://developer.mozilla.org/es/docs/Web/JavaScript
348
356
alert( isNaN("str") ); // true, porque isNaN convierte el string "str" a number y obtiene NaN como resultado de su conversión
349
357
```
350
358
351
-
-`Number.isFinite(value)` devuelve `true` si el argumento pertenece al tipo de dato `number` y no es `NaN/Infinity/-Infinity`. En cualquier otro caso devuelve `false`.
359
+
-`Number.isFinite(value)` devuelve `true` si el argumento pertenece al tipo de dato `number` y no es `NaN/Infinity/-Infinity`. En cualquier otro caso devuelve `false`.
0 commit comments