Skip to content

Pull request last update #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 194 commits into from
Nov 9, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
194 commits
Select commit Hold shift + click to select a range
da8af69
Update article.md
hrodward Oct 17, 2019
5b795f7
minor
Darryl1702 Oct 19, 2019
aae1e26
Update article.md
Darryl1702 Oct 20, 2019
14e82d1
minor
Darryl1702 Oct 20, 2019
74ad826
Update article.md
hrodward Oct 21, 2019
cc3c01b
Update task.md
hrodward Oct 21, 2019
cd97f84
Update article.md
hrodward Oct 21, 2019
5c6be4c
Update article.md
hrodward Oct 21, 2019
8c1b767
Update article.md
hrodward Oct 21, 2019
3c8ae30
Update article.md
hrodward Oct 21, 2019
906dd13
Update task.md
hrodward Oct 21, 2019
7500898
Update task.md
hrodward Oct 21, 2019
c0fd76b
Update task.md
hrodward Oct 21, 2019
89c4a0f
Update article.md
hrodward Oct 21, 2019
4bb52fb
Update task.md
hrodward Oct 21, 2019
2d77eb7
Merge pull request #1483 from Ghost-017/patch-5
iliakan Oct 21, 2019
2cbed98
minor
iliakan Oct 21, 2019
77e9317
Merge pull request #1487 from hrodward/patch-13
iliakan Oct 21, 2019
ea50619
Merge pull request #1488 from hrodward/patch-14
iliakan Oct 21, 2019
ddf9d1e
Merge pull request #1489 from hrodward/patch-15
iliakan Oct 21, 2019
5db94bb
Merge pull request #1490 from hrodward/patch-16
iliakan Oct 21, 2019
e577658
Merge pull request #1491 from hrodward/patch-17
iliakan Oct 21, 2019
e5674cf
Merge pull request #1493 from hrodward/patch-19
iliakan Oct 21, 2019
e661044
Merge pull request #1494 from hrodward/patch-20
iliakan Oct 21, 2019
50aa158
Merge pull request #1495 from hrodward/patch-21
iliakan Oct 21, 2019
5aea931
Merge pull request #1496 from hrodward/patch-22
iliakan Oct 21, 2019
040aea0
Merge pull request #1497 from hrodward/patch-23
iliakan Oct 21, 2019
7a6a566
minor
iliakan Oct 21, 2019
09d2e96
Update article.md
paroche Oct 21, 2019
7a0fbdb
Update article.md
paroche Oct 21, 2019
88cd022
Update article.md
lex111 Oct 21, 2019
dd52fb9
Fixed object variable user.go() to be obj.go()
Oct 21, 2019
022c037
Update article.md
paroche Oct 22, 2019
00d3f99
Merge pull request #1499 from javascript-tutorial/paroche-patch-5
paroche Oct 22, 2019
f430bea
Update article.md
paroche Oct 22, 2019
0932380
Update article.md
paroche Oct 22, 2019
d0b95aa
Update 1-js/08-prototypes/01-prototype-inheritance/article.md
hrodward Oct 22, 2019
6219338
Update article.md
hrodward Oct 22, 2019
a04d80c
Update article.md
hrodward Oct 22, 2019
9151079
Fixed object variable user.go() to be obj.go() (#1498)
lex111 Oct 22, 2019
01bb684
Merge pull request #1471 from hrodward/patch-8
iliakan Oct 22, 2019
c07eb5c
Update article.md
paroche Oct 22, 2019
29ea890
Merge branch 'master' into patch-18
lex111 Oct 22, 2019
2e5fa78
minor
iliakan Oct 22, 2019
00ebc81
Update article.md
hrodward Oct 22, 2019
33cca1b
Fix confusion in the task
lex111 Oct 22, 2019
b6404a6
Update article.md
hrodward Oct 23, 2019
ab55453
Update article.md
hrodward Oct 23, 2019
6f8ad3c
Update article.md
hrodward Oct 23, 2019
ad939bb
Update article.md
hrodward Oct 23, 2019
cc3795f
Update article.md
paroche Oct 24, 2019
f6ead73
Update article.md
paroche Oct 24, 2019
c8e062f
Update article.md
paroche Oct 24, 2019
f954987
Update article.md
paroche Oct 24, 2019
a2d32ad
Update article.md (#1506)
lex111 Oct 24, 2019
c4914ae
Update article.md
hrodward Oct 24, 2019
eb2b327
Update task.md
hrodward Oct 24, 2019
fab771f
Update article.md (#1511)
lex111 Oct 24, 2019
373a305
Update article.md (#1510)
lex111 Oct 24, 2019
31d96a3
Update article.md (#1509)
lex111 Oct 24, 2019
7f28d56
Update article.md (#1507)
lex111 Oct 24, 2019
0007368
Update article.md
hrodward Oct 25, 2019
7df2a19
Update article.md (#1517)
lex111 Oct 25, 2019
072fa7d
minor
iliakan Oct 25, 2019
ead158a
Update article.md
hrodward Oct 25, 2019
9909b90
minor
iliakan Oct 25, 2019
c62c84c
Merge pull request #1492 from hrodward/patch-18
iliakan Oct 25, 2019
321519e
Merge pull request #1518 from hrodward/patch-22
iliakan Oct 25, 2019
86891b9
Merge pull request #1514 from hrodward/patch-32
iliakan Oct 25, 2019
fac4413
Merge pull request #1504 from hrodward/patch-24
iliakan Oct 25, 2019
8d3fbcc
Fix typo.
carsca Oct 25, 2019
a0168c7
Update article.md
hrodward Oct 25, 2019
f2501bc
fix typo (#1520)
lex111 Oct 25, 2019
2bd1854
Update solution.md
hrodward Oct 25, 2019
d048324
Merge pull request #1505 from hrodward/patch-25
iliakan Oct 26, 2019
ec91bab
Merge pull request #1521 from hrodward/patch-24
iliakan Oct 26, 2019
db1e31b
Merge pull request #1519 from hrodward/patch-22
iliakan Oct 26, 2019
70ca842
minor
iliakan Oct 26, 2019
302811b
merging all conflicts
iliakan Oct 28, 2019
2a82d42
Update article.md
hrodward Oct 28, 2019
6a9bfe1
Update article.md
hrodward Oct 28, 2019
e70f039
string outputs without quotes
lumosmind Oct 28, 2019
bfb9b89
Update article.md
Violet-Bora-Lee Oct 28, 2019
b5725a8
'str' inside of 'start'
lumosmind Oct 28, 2019
8f85ab4
Update article.md (#1525)
lex111 Oct 28, 2019
e15a63c
Update article.md (#1526)
lex111 Oct 28, 2019
c06f0dd
string outputs without quotes (#1527)
lex111 Oct 28, 2019
2774d33
Update article.md (#1528)
lex111 Oct 28, 2019
4159a65
'str' inside of 'start' (#1529)
lex111 Oct 28, 2019
07a21c8
add attribute defination to arr.find()
lumosmind Oct 28, 2019
7371945
Missed function expression semicolon
iArazar Oct 28, 2019
24a6d29
Update article.md
Violet-Bora-Lee Oct 28, 2019
83cdced
fix a minor bug in the example
TomSssM Oct 28, 2019
634531a
Array type variables also supports values()
lumosmind Oct 28, 2019
d5195b5
closes #1524 #716
iliakan Oct 29, 2019
9fb2076
correction for code template consistency
lumosmind Oct 29, 2019
00bacf6
Removed extra "and" in a sentence
yogain123 Oct 29, 2019
3e48d52
Update article.md
hrodward Oct 29, 2019
54717a1
Update solution.md
hrodward Oct 29, 2019
b32ce2c
coding style conflict with the tutorial itself
lumosmind Oct 29, 2019
95495bd
linked list must end with 'null'
lumosmind Oct 29, 2019
2fd1a4e
removes russian text chunk from english text
TobiObeck Oct 29, 2019
d8958e2
Update article.md (#1533)
lex111 Oct 29, 2019
23778ed
removes russian text chunk from english text (#1544)
lex111 Oct 29, 2019
0998fce
Removed extra "and" in a sentence (#1537)
lex111 Oct 29, 2019
7510263
correction for code template consistency (#1536)
lex111 Oct 29, 2019
97cd2fc
function declaration vs function call conflict
lumosmind Oct 29, 2019
c5c94bc
closes #1547
iliakan Oct 29, 2019
e8947f7
Merge pull request #1546 from lumosmind/patch-14
iliakan Oct 29, 2019
bb3f9aa
Merge pull request #1543 from lumosmind/patch-12
iliakan Oct 29, 2019
2964aa0
Merge pull request #1542 from lumosmind/patch-11
iliakan Oct 29, 2019
8d45a7c
Merge pull request #1539 from hrodward/patch-35
iliakan Oct 29, 2019
77eedd8
Merge pull request #1538 from hrodward/patch-34
iliakan Oct 29, 2019
726f2a8
Merge pull request #1535 from lumosmind/patch-7
iliakan Oct 29, 2019
d4eaaf4
Merge pull request #1534 from TomSssM/patch-1
iliakan Oct 29, 2019
be6856d
closes #1532
iliakan Oct 29, 2019
4d02719
Merge pull request #1531 from iArazar/patch-1
iliakan Oct 29, 2019
601d958
Merge pull request #1530 from lumosmind/patch-5
iliakan Oct 29, 2019
028b408
Update article.md
hrodward Oct 29, 2019
ccccf10
Update article.md
hrodward Oct 30, 2019
c72735d
Update article.md
hrodward Oct 30, 2019
04893ae
arrow function instead of function
lumosmind Oct 30, 2019
aecf899
code non-compatible with clarification drawing
lumosmind Oct 30, 2019
80b6da1
code non-compatible with clarification drawing
lumosmind Oct 30, 2019
71fb491
minor
iliakan Oct 30, 2019
df58d3f
Merge pull request #1513 from hrodward/patch-31
lex111 Oct 30, 2019
1257501
Update article.md
hrodward Oct 31, 2019
5f37ad1
Update article.md
hrodward Oct 31, 2019
563d0a4
Update task.md
hrodward Oct 31, 2019
487c317
fix mini typo
richardzhanghub Oct 31, 2019
1bc2c9a
fix mini typo (#1559)
lex111 Oct 31, 2019
2a6d840
Fix syntax error
ogaclejapan Nov 1, 2019
c935c5c
Merge pull request #117 from javascript-tutorial/sync-70ca842b
HachemiH Nov 1, 2019
cfcc24d
Conflict fixed on Explain the value of "this" task page in french
HachemiH Nov 1, 2019
6e58835
Conflict fixed on Sort in decreasing order task page in french language
HachemiH Nov 1, 2019
c42f51e
Conflicts fixed on Scheduling: setTimeout and setInterval page in
HachemiH Nov 1, 2019
3a835cd
Conflict fixed on Partial application for login task page in french
HachemiH Nov 1, 2019
1542665
Conflict fixed on Arrow functions revisited page in french language
HachemiH Nov 1, 2019
97625e9
Conflicts fixed on Property flags and descriptors page in french
HachemiH Nov 1, 2019
826d8d1
Conflict fixed on Searching algorithm task page in french language
HachemiH Nov 1, 2019
3da3770
Conflict fixed on Where does it write? task page in french language
HachemiH Nov 1, 2019
e4c18fb
Conflicts fixed on Why are both hamsters full? task page in french
HachemiH Nov 1, 2019
5e319d1
Conflicts fixed on Prototypal inheritance page in french language
HachemiH Nov 1, 2019
f2468b8
Conflicts fixed on Changing "prototype" task page in french language
HachemiH Nov 1, 2019
1c6c656
Conflicts fixed on F.prototype page in french language
HachemiH Nov 1, 2019
be046c2
Conflicts fixed on Native prototypes page in french language
HachemiH Nov 1, 2019
2768615
Conflicts fixed on Prototype methods, objects without __proto__ page in
HachemiH Nov 1, 2019
19eddd3
Conflicts fixed on Class basic syntax page in french language
HachemiH Nov 1, 2019
96b258c
Conflicts fixed on Class inheritance page in french language
HachemiH Nov 1, 2019
25bae6c
Conflicts fixed on Static properties and methods page in french language
HachemiH Nov 1, 2019
ec13a13
Conflicts fixed on Private and protected properties and methods page in
HachemiH Nov 1, 2019
5c318ad
Conflict fixed on Extending built-in classes page in french language
HachemiH Nov 1, 2019
305a5c8
Conflict fixed on Strange instanceof task page in french language
HachemiH Nov 1, 2019
42b747f
Conflicts fixed on Mixins page in french language
HachemiH Nov 1, 2019
52f66eb
Conflicts fixed on Error handling, "try..catch" page in french language
HachemiH Nov 1, 2019
86bf87e
Conflicts fixed on Custom errors, extending Error page in french
HachemiH Nov 1, 2019
0f390cb
Merge pull request #118 from HachemiH/master
HachemiH Nov 1, 2019
107e5df
Merge pull request #1561 from ogaclejapan/fix-syntax
iliakan Nov 1, 2019
f3e4541
Merge pull request #1558 from hrodward/patch-36
iliakan Nov 1, 2019
b8dcadf
Merge pull request #1557 from hrodward/patch-35
iliakan Nov 1, 2019
eebbaa2
Merge pull request #1556 from hrodward/patch-31
iliakan Nov 1, 2019
80f3954
Merge pull request #1555 from lumosmind/patch-20
iliakan Nov 1, 2019
06c9dfe
Merge pull request #1554 from lumosmind/patch-19
iliakan Nov 1, 2019
24d3bec
Merge pull request #1553 from lumosmind/patch-18
iliakan Nov 1, 2019
7fcd048
Merge pull request #1551 from hrodward/patch-34
iliakan Nov 1, 2019
b2305ce
Merge pull request #1550 from hrodward/patch-22
iliakan Nov 1, 2019
81f171e
wrapper instead of helper
lumosmind Nov 2, 2019
da15e57
bug fix on the server
TomSssM Nov 2, 2019
a967ad0
closes #1560
iliakan Nov 2, 2019
ad08b46
fixes #1563
iliakan Nov 2, 2019
7f5fced
Merge pull request #1564 from lumosmind/patch-23
iliakan Nov 2, 2019
6732cef
fix
iliakan Nov 2, 2019
d4fd448
Merge pull request #1566 from TomSssM/tomsssm-patch-2
iliakan Nov 2, 2019
611fefd
fixes #1569
iliakan Nov 3, 2019
3ffa0be
minor fixes
Violet-Bora-Lee Nov 3, 2019
ec21af8
Merge pull request #1570 from Violet-Bora-Lee/master
iliakan Nov 3, 2019
1212791
merging all conflicts
iliakan Nov 4, 2019
5d1666d
Merge pull request #119 from javascript-tutorial/sync-ec21af8a
HachemiH Nov 4, 2019
521517a
Conflict fixed on Function expressions and arrows page in french
HachemiH Nov 4, 2019
dfbfcde
Conflict fixed on Debugging in Chrome page in french language
HachemiH Nov 4, 2019
8f556c4
Conflicts fixed on Object to primitive conversion page in french
HachemiH Nov 4, 2019
bc3a6e5
Conflicts fixed on Strings page in french language
HachemiH Nov 4, 2019
497b4f9
Conflicts fixed on Array methods page in french language
HachemiH Nov 4, 2019
121dfbe
Conflicts fixed on Iterables page in french language
HachemiH Nov 4, 2019
c274ff5
Conflict fixed on Object.keys, values, entries page in french language
HachemiH Nov 4, 2019
06b761c
Conflicts fixed on Closure page in french language
HachemiH Nov 4, 2019
67f781d
Conflicts fixed on Scheduling: setTimeout and setInterval page in french
HachemiH Nov 4, 2019
833244f
Conflicts fixed on Class checking: "instanceof" page in french language
HachemiH Nov 4, 2019
0b55228
Conflicts fixed on Promise: then versus catch task page in french
HachemiH Nov 4, 2019
d845cb1
Conflicts fixed on Promises chaining page in french language
HachemiH Nov 4, 2019
097b844
Conflicts fixed on Error handling with promises page in french language
HachemiH Nov 4, 2019
e0ad96f
Conflicts fixed on Promise API page in french language
HachemiH Nov 4, 2019
2787b03
Conflicts fixed on Microtasks page in french language
HachemiH Nov 4, 2019
bbed583
Merge pull request #120 from HachemiH/master
HachemiH Nov 4, 2019
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
2 changes: 1 addition & 1 deletion 1-js/02-first-steps/12-while-for/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ Mais nous pouvons forcer la sortie à tout moment. Il y a une directive spécial

Par exemple, la boucle ci-dessous demande à l'utilisateur une série de chiffres, mais "se casse" quand aucun numéro n'est entré :

```js
```js run
let sum = 0;

while (true) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ welcome(); // ok maintenant
```smart header="Quand choisir la fonction déclaration par rapport à la fonction expression ?"
En règle générale, lorsque nous devons déclarer une fonction, la première chose à prendre en compte est la syntaxe de la fonction déclaration, celle que nous utilisions auparavant. Cela donne plus de liberté dans l'organisation de notre code, car nous pouvons appeler de telles fonctions avant qu'elles ne soient déclarées.

C’est également meilleur pour la lisibilité, car il est plus facile de rechercher la `fonction f(…) {…}` dans le code que `let f = function(…) {…}`. Les fonction déclarations sont plus "accrocheuses".
C’est également meilleur pour la lisibilité, car il est plus facile de rechercher la `fonction f(…) {…}` dans le code que `let f = function(…) {…};`. Les fonction déclarations sont plus "accrocheuses".

… Mais si une déclaration de fonction ne nous convient pas pour une raison quelconque (nous en avons vu un exemple ci-dessus), alors il convient d'utiliser une Fonction Expression.
```
Expand Down
2 changes: 1 addition & 1 deletion 1-js/04-object-basics/04-object-methods/3-why-this/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ importance: 3

# Expliquez la valeur de "this"

Dans le code ci-dessous, nous avons l'intention d'appeler la méthode `user.go()` 4 fois de suite.
Dans le code ci-dessous, nous avons l'intention d'appeler la méthode `obj.go()` 4 fois de suite.

Mais les appels `(1)` et `(2)` fonctionnent différemment de `(3)` et `(4)`. Pourquoi ?

Expand Down
100 changes: 67 additions & 33 deletions 1-js/04-object-basics/05-object-toprimitive/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,21 +53,27 @@ let greater = user1 > user2;
`"default"`
: Se produit dans de rares cas où l'opérateur n'est "pas sûr" du type auquel il doit s'attendre.

Par exemple, le binaire plus `+` peut fonctionner à la fois avec des chaînes de caractères (les concaténer) et des nombres (les ajouter). Ou quand un objet est comparé en utilisant `==` avec une chaîne, un numéro ou un symbole, il est également difficile de savoir quelle conversation doit être faite.
Par exemple, le binaire plus `+` peut fonctionner à la fois avec des chaînes de caractères (les concaténer) et des nombres (les ajouter), donc les chaînes de caractères et les chiffres feraient l'affaire. Donc, si le plus binaire obtient un objet sous forme d'argument, il utilise l'indicateur `"default"` pour le convertir.

```js
// binary plus
let total = car1 + car2;
En outre, si un objet est comparé à l'aide de `==` avec une chaîne de caractères, un nombre ou un symbole, il est également difficile de savoir quelle conversion doit être effectuée, par conséquent l'indicateur `"default"` est utilisé.

// obj == string/number/symbol
if (user == 1) { ... };
```
```js
// binary plus uses the "default" hint
let total = obj1 + obj2;

// obj == number uses the "default" hint
if (user == 1) { ... };
```

L'opérateur supérieur / inférieur `<>` peut également utiliser des chaînes de caractères et des nombres. Néanmoins, il utilise un indice `"number"` non `"default"`. Cest pour des raisons historiques.
Les opérateurs de comparaison supérieurs et inférieurs, tels que `<` `>`, peuvent également fonctionner avec des chaînes de caractères et des nombres. Néanmoins, ils utilisent l'indicateur `"number"`, pas `default`. C'est pour des raisons historiques,

En pratique, tous les objets intégrés, à l'exception d'un cas (l'objet `Date`, nous l'apprendrons plus tard) implémentent la conversion `"default"` de la même manière que `"number"`. Et probablement nous devrions faire la même chose.
En pratique cependant, nous n'avons pas besoin de nous souvenir de ces détails particuliers, car tous les objets intégrés, à l'exception d'un cas (l'objet `Date`, nous l'apprendrons plus tard), implémentent la conversion `'default'` de la même manière que `"number"`. Et nous pouvons faire la même chose.

Veuillez noter qu'il n'y a que trois "hints" ("indices"). C'est simple. Il n'y a pas d'indice "booléen" (tous les objets sont vrais dans un contexte booléen) ou autre chose. Et si nous traitons `"default"` et `"number"` de la même manière, comme le font la plupart des programmes intégrés, il n'y a que deux conversions.
```smart header="Pas d'indice `\"boolean\"`"
Veuillez noter qu'il n'y a que trois indices. C'est aussi simple que cela.

Il n'y a pas d'indice "boolean" (tous les objets sont `true` dans un contexte booléen) ou autre chose. Et si nous traitons de la même manière `'default'` et `'number'`, comme le font la plupart des programmes intégrés, il n'y a au final que deux conversions.
```

**Pour effectuer la conversion, JavaScript essaie de trouver et d'appeler trois méthodes d'objet :**

Expand Down Expand Up @@ -119,7 +125,29 @@ S'il n'y a pas de `Symbol.toPrimitive`, alors JavaScript essaye de les trouver e
- `toString -> valueOf` pour le hint "string".
- `valueOf -> toString` sinon.

Par exemple, ici `user` fait la même chose que ci-dessus en combinant `toString` et `valueOf` :
Ces méthodes doivent renvoyer une valeur primitive. Si `toString` ou `valueOf` renvoie un objet, il est ignoré (comme s'il n'y avait pas de méthode).

Par défaut, un objet brut a les méthodes `toString` et `valueOf` suivantes :

- La méthode `toString` renvoie une chaîne de caractères `"[object Object]"`.
- La méthode `valueOf` renvoie un objet.

Voici la démo :

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

alert(user); // [object Object]
alert(user.valueOf() === user); // true
```

Donc, si nous essayons d'utiliser un objet en tant que chaîne de caractères, comme dans un `alert` ou autre chose, nous voyons par défaut `[object Object]`.

Et la valeur par défaut `valueOf` n'est mentionnée ici que par souci d'exhaustivité, afin d'éviter toute confusion. Comme vous pouvez le constater, l'objet est renvoyé et est donc ignoré. Ne me demandez pas pourquoi, c'est pour des raisons historiques. Nous pouvons donc supposer que cela n'existe pas.

Implémentons ces méthodes.

Par exemple, ici, `user` fait la même chose que ci-dessus en combinant `toString` et `valueOf` au lieu de `Symbol.toPrimitive` :

```js run
let user = {
Expand Down Expand Up @@ -166,7 +194,7 @@ En l'absence de `Symbol.toPrimitive` et de `valueOf`, `toString` gérera toutes

La chose importante à savoir sur toutes les méthodes de conversion de primitives est qu'elles ne renvoient pas nécessairement la primitive "hinted".

Il n'y a pas de control pour vérifier si `ToString()` renvoie exactement une chaîne de caractères ou si la méthode `Symbol.toPrimitive` renvoie un nombre pour un indice "number".
Il n'y a pas de control pour vérifier si `ToString()` renvoie exactement une chaîne de caractères ou si la méthode `Symbol.toPrimitive` renvoie un nombre pour un indice `"number"`.

**La seule chose obligatoire : ces méthodes doivent renvoyer une primitive, pas un objet.**

Expand All @@ -176,35 +204,41 @@ Pour des raisons historiques, si `toString` ou `valueOf` renvoie un objet, il n
En revanche, `Symbol.toPrimitive` doit renvoyer une primitive, sinon une erreur se produira.
```

## Autres opérations
## Autres conversions

Comme nous le savons déjà, de nombreux opérateurs et fonctions effectuent des conversions de types, par exemple la multiplication `*` convertit les opérandes en nombres.

Une opération qui a initié la conversion obtient cette primitive, puis continue à travailler avec elle, en appliquant d'autres conversions si nécessaire.
Si nous passons un objet en argument, il y a deux étapes :
1. L'objet est converti en primitive (en utilisant les règles décrites ci-dessus).
2. Si la primitive résultante n'est pas du bon type, elle est convertie.

Par exemple :

- Les opérations mathématiques, sauf binaire plus, convertissent la primitive en nombre :
```js run
let obj = {
// toString gère toutes les conversions en l'absence d'autres méthodes
toString() {
return "2";
}
};

```js run
let obj = {
// toString gère toutes les conversions en l'absence d'autres méthodes
toString() {
return "2";
}
};
alert(obj * 2); // 4, objet converti en primitive "2", puis la multiplication le transforme en un nombre
```

alert(obj * 2); // 4, objet converti en primitive "2", puis multiplié par un nombre
```
1. La multiplication `obj * 2` convertit d'abord l'objet en primitive (cela devient une chaîne de caractère `"2"`).
2. Ensuite `"2" * 2` devient `2 * 2` (la chaîne de caractères est convertie en nombre).

- Le binaire plus va concaténer des chaînes dans la même situation :
```js run
let obj = {
toString() {
return "2";
}
};
Le binaire plus va concaténer des chaînes de caractères dans la même situation, car il accepte volontiers une chaîne de caractères :

alert(obj + 2); // 22 (la conversion en primitive a renvoyé une chaîne de caractères => concaténation)
```
```js run
let obj = {
toString() {
return "2";
}
};

alert(obj + 2); // 22 ("2" + 2), la conversion en primitive a renvoyé une chaîne de caractères => concaténation
```

## Résumé

Expand Down
8 changes: 4 additions & 4 deletions 1-js/05-data-types/03-string/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ Il existe 3 méthodes en JavaScript pour obtenir un substring : `substring`, `su

```js run
let str = "st*!*ringify*/!*";
alert( str.slice(2) ); // ringify, à partir de la 2e position jusqu'à la fin
alert( str.slice(2) ); // 'ringify', à partir de la 2e position jusqu'à la fin
```

Des valeurs négatives pour `start/end` sont également possibles. Elles veulent dire que la position est comptée à partir de la fin de la chaîne de caractères :
Expand All @@ -407,7 +407,7 @@ Il existe 3 méthodes en JavaScript pour obtenir un substring : `substring`, `su
let str = "strin*!*gif*/!*y";

// commence à la 4ème position à partir de la droite, se termine au 1er à partir de la droite
alert( str.slice(-4, -1) ); // gif
alert( str.slice(-4, -1) ); // 'gif'
```

`str.substring(start [, end])`
Expand Down Expand Up @@ -439,14 +439,14 @@ Il existe 3 méthodes en JavaScript pour obtenir un substring : `substring`, `su

```js run
let str = "st*!*ring*/!*ify";
alert( str.substr(2, 4) ); // ring, à partir de la 2ème position on obtient 4 caractères
alert( str.substr(2, 4) ); // 'ring', à partir de la 2ème position on obtient 4 caractères
```

Le premier argument peut être négatif, pour compter à partir de la fin :

```js run
let str = "strin*!*gi*/!*fy";
alert( str.substr(-4, 2) ); // gi, à partir de la 4ème position on obtient 2 caractères
alert( str.substr(-4, 2) ); // 'gi', à partir de la 4ème position on obtient 2 caractères
```

Récapitulons ces méthodes pour éviter toute confusion :
Expand Down
4 changes: 2 additions & 2 deletions 1-js/05-data-types/05-array-methods/4-sort-back/task.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ importance: 4

---

# Trier dans l'ordre inverse
# Trier par ordre décroissant

```js
let arr = [5, 2, 1, -10, 8];

// ... votre code pour le trier dans l'ordre inverse
// ... votre code pour le trier par ordre décroissant

alert( arr ); // 8, 5, 2, 1, -10
```
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@

- Please note how methods are stored. They are simply added to `this.methods` property.
- All tests and numeric conversions are done in the `calculate` method. In future it may be extended to support more complex expressions.

[js src="_js/solution.js"]
6 changes: 3 additions & 3 deletions 1-js/05-data-types/05-array-methods/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ C'est normal, car `delete obj.key` supprime une valeur par la` clé`. C'est tout

Des méthodes spéciales doivent donc être utilisées.

La méthode [arr.splice(str)](mdn:js/Array/splice) est un couteau suisse pour les tableaux. Elle peut tout faire : ajouter, supprimer et remplacer des éléments.
La méthode [arr.splice(start)](mdn:js/Array/splice) est un couteau suisse pour les tableaux. Elle peut tout faire : ajouter, supprimer et remplacer des éléments.

La syntaxe est la suivante:

Expand Down Expand Up @@ -270,7 +270,7 @@ alert( arr.includes(NaN) );// true (correct)

Imaginez que nous ayons un tableau d'objets. Comment pouvons-nous trouver un objet avec la condition spécifique?

Ici la méthode [arr.find](mdn:js/Array/find) se révèle vraiment pratique.
Ici la méthode [arr.find(fn)](mdn:js/Array/find) se révèle vraiment pratique.

La syntaxe est la suivante:
```js
Expand Down Expand Up @@ -577,7 +577,7 @@ Le flux de calcul:

Ou sous la forme d'un tableau, où chaque ligne représente un appel de fonction sur l'élément de tableau suivant:

| |`sum`|`current`|`result`|
| |`sum`|`current`|result|
|---|-----|---------|---------|
|premier appel|`0`|`1`|`1`|
|deuxième appel|`1`|`2`|`3`|
Expand Down
4 changes: 3 additions & 1 deletion 1-js/05-data-types/06-iterable/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,15 +142,17 @@ for (let char of str) {

Pour mieux comprendre, voyons comment utiliser explicitement un itérateur.

Nous allons parcourir une chaîne de caractères de la même manière que `for..of`, mais avec des appels directs. Ce code obtient un itérateur de chaîne de caractères et en récupère la valeur "manuellement":
Nous allons parcourir une chaîne de caractères de la même manière que `for..of`, mais avec des appels directs. Ce code crée un itérateur de chaîne de caractères et en récupère la valeur "manuellement":

```js run
let str = "Hello";

// fait la même chose que
// for (let char of str) alert(char);

*!*
let iterator = str[Symbol.iterator]();
*/!*

while (true) {
let result = iterator.next();
Expand Down
2 changes: 1 addition & 1 deletion 1-js/05-data-types/09-keys-values-entries/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Ils sont pris en charge par:

- `Map`
- `Set`
- `Array` (sauf `arr.values()`)
- `Array`

Les objets simples prennent également en charge des méthodes similaires, mais la syntaxe est un peu différente.

Expand Down
2 changes: 1 addition & 1 deletion 1-js/05-data-types/10-destructuring-assignment/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ L'affectation par décomposition fonctionne également avec les objets.
La syntaxe de base est la suivante :

```js
let {var1, var2} = {var1:…, var2…}
let {var1, var2} = {var1:…, var2:…}
```

Nous avons un objet existant à droite que nous souhaitons scinder en variables. Le côté gauche contient un "pattern" pour les propriétés correspondantes. Dans ce cas simple, c’est une liste de noms de variables dans `{...}`.
Expand Down
4 changes: 2 additions & 2 deletions 1-js/05-data-types/12-json/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -425,9 +425,9 @@ alert( numbers[1] ); // 1
Ou pour les objets imbriqués:

```js run
let user = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';
let userData = '{ "name": "John", "age": 35, "isAdmin": false, "friends": [0,1,2,3] }';

user = JSON.parse(user);
let user = JSON.parse(userData);

alert( user.friends[1] ); // 1
```
Expand Down
1 change: 1 addition & 0 deletions 1-js/06-advanced-functions/01-recursion/article.md
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ let list = { value: 1 };
list.next = { value: 2 };
list.next.next = { value: 3 };
list.next.next.next = { value: 4 };
list.next.next.next.next = null;
```

Ici, nous pouvons voir encore plus clairement qu'il y a plusieurs objets, chacun ayant les valeurs `value` et` next` pointant vers le voisin. La variable `list` est le premier objet de la chaîne. Par conséquent, en suivant les pointeurs `next`, nous pouvons atteindre n'importe quel élément.
Expand Down
Loading