Skip to content
Merged
Show file tree
Hide file tree
Changes from 75 commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
8c7b981
Add information about virtual/mobile keyboards and an additional keyb…
Danziger Nov 28, 2020
7b21346
Typos + rephrasing
RapTho Dec 14, 2020
7a7b25a
small rephrasings
RapTho Dec 14, 2020
9f2d200
Update 2-ui/3-event-details/7-keyboard-events/article.md
Danziger Dec 14, 2020
dfa5ec9
small reformulation
RapTho Dec 14, 2020
9a84c51
Fixed small typos
RapTho Dec 14, 2020
3a21dce
Add link to Kotlin/JS
tokou Dec 16, 2020
0427ecb
Reformulations
RapTho Dec 17, 2020
f3555ee
fixed small typos
nazar-bodan Dec 20, 2020
cbdc268
Update article.md
imaverage Dec 24, 2020
33e25dc
Update article.md
Georgy-Losenkov Dec 25, 2020
83b051e
Change source of the term 'microtask'
raycon Dec 31, 2020
701392c
Merge pull request #2413 from raycon/master
iliakan Dec 31, 2020
6418344
closes #2411
iliakan Dec 31, 2020
2754e03
closes #2410
iliakan Dec 31, 2020
1404669
Merge pull request #2406 from Georgy-Losenkov/patch-1
iliakan Dec 31, 2020
b7d2820
Merge pull request #2391 from RapTho/patch-6
iliakan Dec 31, 2020
b0aa994
Merge pull request #2400 from wolfter12/fixed-small-typos
iliakan Dec 31, 2020
1fa08bc
Merge pull request #2404 from imaverage/patch-1
iliakan Dec 31, 2020
cc593c6
Update article.md
LLyaudet Dec 31, 2020
02089cf
Merge pull request #2393 from tokou/patch-1
iliakan Dec 31, 2020
98de4f4
Merge pull request #2386 from RapTho/patch-2
iliakan Dec 31, 2020
4a0da59
Merge pull request #2414 from LLyaudet/patch-2
iliakan Dec 31, 2020
b9481da
Edits based on feedback iliakan
RapTho Jan 2, 2021
bcbb5d5
Edit based on feedback iliakan
RapTho Jan 2, 2021
03b6d86
Edit based on feedback iliakan
RapTho Jan 2, 2021
04b1313
Remove keyjs.dev link under the key codes inspection snippet.
Danziger Jan 3, 2021
039716d
Merge pull request #2389 from Danziger/patch-1
iliakan Jan 3, 2021
16ac397
kotlin 404
joaquinelio Jan 4, 2021
e730c5a
Merge pull request #2416 from joaquinelio/patch-1
iliakan Jan 4, 2021
c67f8b8
Merge pull request #2388 from RapTho/patch-4
iliakan Jan 4, 2021
51f3915
Merge pull request #2390 from RapTho/patch-5
iliakan Jan 4, 2021
42ee148
Merge pull request #2395 from RapTho/patch-8
iliakan Jan 4, 2021
c350514
minor
iliakan Jan 7, 2021
32518b7
minor
iliakan Jan 7, 2021
80c4901
all operators must return a value
lumosmind Jan 7, 2021
a2561dc
Minor output typo
TaylorClay Jan 7, 2021
2229a48
Update article.md
martynov-94 Jan 8, 2021
5965ae7
Update currying function to use bind instead of wrapper pass
lakbychance Jan 9, 2021
997f392
Add the (2) point reference
lakbychance Jan 9, 2021
3b7d493
closes #2421
iliakan Jan 9, 2021
18a60ab
Merge pull request #2420 from martynov-94/patch-1
iliakan Jan 9, 2021
930485b
Merge pull request #2419 from TaylorClay/patch-1
iliakan Jan 9, 2021
12b23c7
Merge pull request #2417 from lumosmind/patch-55
iliakan Jan 9, 2021
6113f33
Merge pull request #2422 from lapstjup/patch-1
iliakan Jan 9, 2021
2027939
minor fixes
iliakan Jan 9, 2021
6a432df
parameters are also local variables
lumosmind Jan 9, 2021
86a6021
minor fixes
iliakan Jan 10, 2021
468e355
Merge pull request #2423 from lumosmind/patch-56
iliakan Jan 10, 2021
6b296c1
new.target is undefined not empty
sarscoder Jan 11, 2021
b9d5335
Merge pull request #2425 from sarscode/sarscode-constructor-new-target
iliakan Jan 11, 2021
afd41ea
each unit parts must be tested
lumosmind Jan 12, 2021
eb3b360
minor fixes
iliakan Jan 12, 2021
73fd173
Update article.md
bilalbutt044 Jan 12, 2021
09f8ca8
individual test case for methods
lumosmind Jan 12, 2021
85fe7b8
no need to "js run"
lumosmind Jan 13, 2021
09ec05c
minor fixes
iliakan Jan 13, 2021
3c673ac
Merge pull request #2434 from lumosmind/patch-65
iliakan Jan 13, 2021
c7d3072
closes #2433
iliakan Jan 13, 2021
58e6456
minor fixes
iliakan Jan 13, 2021
003d602
Merge pull request #2432 from lumosmind/patch-62
iliakan Jan 13, 2021
9c1a0fd
Merge pull request #2431 from bilalbutt044/patch-1
iliakan Jan 13, 2021
f6d3e30
Merge pull request #2429 from lumosmind/patch-61
iliakan Jan 13, 2021
bc8b37b
minor fixes
iliakan Jan 13, 2021
4307531
Merge branch 'master' of github.com:javascript-tutorial/en.javascript…
iliakan Jan 13, 2021
15e6f2d
minor fixes
iliakan Jan 13, 2021
e95ca4b
typo
lumosmind Jan 13, 2021
9c082c8
minor fixes
iliakan Jan 13, 2021
99b2a09
Merge pull request #2437 from lumosmind/patch-68
iliakan Jan 13, 2021
8eb6f97
minor fixes
iliakan Jan 13, 2021
f797858
closes #2398
iliakan Jan 14, 2021
77fe377
'enstream/master' into susy210116
joaquinelio Jan 16, 2021
faeb3f5
Update article.md
joaquinelio Jan 16, 2021
3aa61a6
Update article.md
joaquinelio Jan 16, 2021
9237669
Update article.md
joaquinelio Jan 16, 2021
d093320
Update 1-js/02-first-steps/08-operators/article.md
joaquinelio Jan 17, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions 1-js/01-getting-started/1-intro/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ Ejemplos de tales lenguajes:
-[FLow](https://flow.org/) también agrega la escritura de datos, pero de una manera diferente. Desarrollado por Facebook.
- [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.
- [Brython](https://brython.info/) es un transpilador de Python a JavaScript que permite escribir aplicaciones en Python puro sin JavaScript.
- [Kotlin](https://kotlinlang.org/docs/reference/js-overview.html) es un lenguaje moderno, seguro y conciso que puede apuntar al navegador o a Node.

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.

Expand Down
9 changes: 2 additions & 7 deletions 1-js/01-getting-started/2-manuals-specifications/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,11 @@ Si estás desarrollando para navegadores web, se mencionan otras especificacione

## Manuales

- **MDN (Mozilla) JavaScript Reference** es un manual con ejemplos y otras informaciones. Es fantástico para obtener información exhaustiva sobre funciones individuales del lenguaje, métodos, etc.
- **MDN (Mozilla) JavaScript Reference** es el manual principal, con ejemplos y otras informaciones. Es fantástico para obtener información exhaustiva sobre funciones individuales del lenguaje, métodos, etc.

Se puede acceder en <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.

Aunque a menudo es mejor hace una búsqueda en internet, adicionando "MDN [término]" como parte de la *query* en el motor de búsqueda, e.g. <https://google.com/search?q=MDN+parseInt> para buscar la función `parseInt`.


- **MSDN** – Manual de Microsoft con mucha información, incluyendo JavaScript (a menudo denominado JScript). Si se necesita información específica de Internet Explorer, es el mejor lugar a consultar: <http://msdn.microsoft.com/>.

También podemos hacer una búsqueda con frases tales como "RegExp MSDN" o "RegExp MSDN jscript".
Aunque a menudo es preferible una búsqueda en internet. Simplemente añade "MDN [término]" en la consulta, por ejemplo <https://google.com/search?q=MDN+parseInt> para buscar la función `parseInt`.

## Tablas de compatibilidad

Expand Down
2 changes: 1 addition & 1 deletion 1-js/02-first-steps/08-operators/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -219,7 +219,7 @@ alert( x ); // 5

El hecho de que `=` sea un operador, no un construcción "mágica" del lenguaje, tiene un implicanción interesante.
Comment thread
joaquinelio marked this conversation as resolved.
Outdated

La mayoría de los operadores en JavaScript devuelven un valor. Esto es obvio para `+` y `-`, pero también es cierto para `=`.
Todos los operadores en JavaScript devuelven un valor. Esto es obvio para `+` y `-`, pero también es cierto para `=`.

La llamada `x = value` escribe el `value` en `x` *y luego lo devuelve*.

Expand Down
2 changes: 1 addition & 1 deletion 1-js/03-code-quality/01-debugging-chrome/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Por favor abre el desplegable de informacion de la derecha (etiquetado con flech

Tambien tenemos la palabra `this` la cual no estudiaremos ahora, pero pronto lo haremos.

## Tazado de la ejecución
## Trazado de la ejecución

Ahora es tiempo de *trazar* el script.

Expand Down
4 changes: 2 additions & 2 deletions 1-js/04-object-basics/03-garbage-collection/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ Simple, los valores "alcanzables" son aquellos que son accesibles o se pueden ut

Por ejemplo:

- Variables locales y parámetros de la función actual.
- Variables y parámetros para otras funciones en la cadena actual de llamadas anidadas.
- La función ejecutándose actualmente, sus variables locales y parámetros.
- Otras funciones en la cadena actual de llamadas anidadas, sus variables y parámetros.
- Variables Globales
- (Hay algunos otros internos también)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ describe("calculator", function() {
afterEach(function() {
prompt.restore();
});

it('the read get two values and saves them as object properties', function () {
assert.equal(calculator.a, 2);
assert.equal(calculator.b, 3);
});

it("the sum is 5", function() {
assert.equal(calculator.sum(), 5);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ describe("calculator", function() {
calculator = new Calculator();
calculator.read();
});

it("the read method asks for two values using prompt and remembers them in object properties", function() {
assert.equal(calculator.a, 2);
assert.equal(calculator.b, 3);
});

it("cuando se ingresa 2 y 3, la suma es 5", function() {
assert.equal(calculator.sum(), 5);
Expand Down
2 changes: 1 addition & 1 deletion 1-js/04-object-basics/06-constructor-new/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ La sintaxis a partir de esta sección es raramente utilizada, puedes omitirla a

Dentro de una función, podemos verificar si ha sido llamada con o sin el `new`, utilizando una propiedad especial `new.target`.

Está vacía para llamadas normales y es equivalente a la función si es llamada con `new`:
Es "undefined" para llamadas normales y es equivalente a la función si es llamada con `new`:

```js run
function User() {
Expand Down
12 changes: 5 additions & 7 deletions 1-js/04-object-basics/07-optional-chaining/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Es por ello que el encadenamiento opcional `?.` fue agregado al lenguaje. ¡Para

## Encadenamiento opcional

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

**De aquí en adelante en este artículo, por brevedad, diremos que algo "existe" si no es `null` o `undefined`.**

Expand Down Expand Up @@ -103,7 +103,7 @@ alert( user?.address.street ); // undefined

Tenga en cuenta: la sintaxis `?.` hace opcional el valor delante de él, pero no más allá.

Por ejemplo en `user?.address.street.name` el `?.` permite a `user` ser `null/undefined`, pero es todo lo que hace. El resto de las propiedades son accedidas de la manera normal. Si queremos que algunas de ellas sean opcionales, necesitamos reemplazar más `.` con `?.`.
Por ejemplo en `user?.address.street.name` el `?.` permite a `user` ser `null/undefined` (y devuelve `undefined` en tal caso), pero solo para `user`. El resto de las propiedades son accedidas de la manera normal. Si queremos que algunas de ellas sean opcionales, necesitamos reemplazar más `.` con `?.`.

```warn header="No abuses del encadenamiento opcional"
Deberíamos usar `?.` solo donde está bien que algo no exista.
Expand Down Expand Up @@ -173,18 +173,16 @@ Entonces `?.()` Comprueba la parte izquierda: si la función admin existe, enton
La sintaxis `?.[]` también funciona si quisiéramos usar corchetes `[]` para acceder a las propiedades en lugar de punto `.`. Al igual que en casos anteriores, permite leer de forma segura una propiedad de un objeto que puede no existir.

```js run
let key = "firstName";

let user1 = {
firstName: "John"
};

let user2 = null; // Imagine, no podríamos autorizar al usuario

let key = "firstName";
let user2 = null;

alert( user1?.[key] ); // John
alert( user2?.[key] ); // undefined

alert( user1?.[key]?.something?.not?.existing); // undefined
```

También podemos usar `?.` con `delete`:
Expand Down
2 changes: 1 addition & 1 deletion 1-js/04-object-basics/08-symbol/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ No habrá conflicto porque los Symbols siempre son diferentes, incluso si tienen

Ahora ten en cuenta que si utilizamos un string `"id"` en lugar de un Symbol para el mismo propósito, entonces SÍ *habría* un conflicto:

```js run
```js
let user = { name: "John" };

// Nuestro script usa la clave "id"
Expand Down
16 changes: 12 additions & 4 deletions 1-js/05-data-types/02-number/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,29 @@ Imagina que necesitamos escribir mil millones (En inglés "1 billion"). La forma
let billion = 1000000000;
```

También podemos usar guion bajo `_` como separador:

```js
let billion = 1_000_000_000;
```

Aquí `_` es "azúcar sintáctica", hace el número más legible. El motor JavaScript simplemente ignora `_` entre dígitos asi que es exactamente e igual al billion de más arriba.

Pero en la vida real tratamos de evitar esribir una larga cadena de ceros porque es fácil tipear mal.

En JavaScript, acortamos un número agregando la letra `"e"` y especificando la cantidad de ceros:

```js run
let billion = 1e9; // 1 billion, literalmente: 1 y 9 ceros

alert( 7.3e9 ); // 7.3 billions (7,300,000,000)
alert( 7.3e9 ); // 7.3 billions (tanto 7300000000 como 7_300_000_000)
```

En otras palabras, `"e"` multiplica el número por el `1` seguido de la cantidad de ceros dada.

```js
1e3 = 1 * 1000
1.23e6 = 1.23 * 1000000
1e3 = 1 * 1000 // e3 significa *1000
1.23e6 = 1.23 * 1000000 // e6 significa *1000000
```

Ahora escribamos algo muy pequeño. Digamos 1 microsegundo (un millonésimo de segundo):
Expand Down Expand Up @@ -125,7 +133,7 @@ Hay varias funciones incorporadas para el redondeo:
: Redondea hacia arriba: `3.1` torna en `4`, y `-1.1` torna en `-1`.

`Math.round`
: Redondea hacia el entero más cercano: `3.1` torna en `3`, `3.6` torna en `4` y `-1.1` torna en `-1`.
: 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.

`Math.trunc` (no soportado en Internet Explorer)
: Remueve lo que haya tras el punto decimal sin redondear: `3.1` torna en `3`, `-1.1` torna en `-1`.
Expand Down
9 changes: 4 additions & 5 deletions 1-js/05-data-types/06-iterable/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ No hay limitaciones en `next`, puede devolver más y más valores, eso es normal
Por supuesto, el bucle `for..of` sobre un iterable de este tipo sería interminable. Pero siempre podemos detenerlo usando `break`.
```


## *String* es iterable

Las matrices y cadenas son los iterables integrados más utilizados.
Expand Down Expand Up @@ -164,7 +165,7 @@ Rara vez se necesita esto, pero nos da más control sobre el proceso que `for..o

## Iterables y array-likes [#array-like]

Hay dos términos oficiales que se parecen, pero son muy diferentes. Asegúrese de comprenderlos bien para evitar confusiones.
Los dos son términos oficiales que se parecen, pero son muy diferentes. Asegúrese de comprenderlos bien para evitar confusiones.

- *Iterables* son objetos que implementan el método `Symbol.iterator`, como se describió anteriormente.
- *Array-likes* son objetos que tienen índices y `longitud` o *length*, por lo que se ven como matrices.
Expand All @@ -173,11 +174,9 @@ Cuando usamos JavaScript para tareas prácticas en el navegador u otros entornos

Por ejemplo, las cadenas son iterables (`for..of` funciona en ellas) y array-like (tienen índices numéricos y `length`).

Pero un iterable puede no ser array-like. Y viceversa, un array-like puede no ser iterable.


Por ejemplo, `range` en el ejemplo anterior es iterable, pero no array-like, porque no tiene propiedades indexadas ni `longitud` o *length*.
Pero un iterable puede que no sea array-like. Y viceversa, un array-like puede no ser iterable.

Por ejemplo, `range` en el ejemplo anterior es iterable, pero no es array-like, porque no tiene propiedades indexadas ni `longitud` o *length*.

Y aquí está el objeto que tiene forma de matriz, pero no es iterable:

Expand Down
Loading