Skip to content

Commit e8f1ed6

Browse files
authored
Merge pull request #237 from javascript-tutorial/sync-181cc781
Sync with upstream @ 181cc78
2 parents cf1ca83 + 749a9a7 commit e8f1ed6

File tree

80 files changed

+1586
-212
lines changed

Some content is hidden

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

80 files changed

+1586
-212
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@ Le navigateur a un moteur intégré, parfois il peut être également appelé "l
2424

2525
Différents moteurs ont différents "nom de code", par exemple:
2626

27+
<<<<<<< HEAD
2728
- [V8](https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)) -- dans Chrome et Opera.
2829
- [SpiderMonkey](https://fr.wikipedia.org/wiki/SpiderMonkey) -- dans Firefox.
2930
- … Il existe d'autres noms de code comme "Trident", "Chakra" pour différentes version d'Internet Explorer, "ChakraCore" pour Microsoft Edge, "Nitro" ans "SquirrelFish" pour Safari etc.
31+
=======
32+
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome and Opera.
33+
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
34+
- ...There are other codenames like "Chakra" for IE, "ChakraCore" for Microsoft Edge, "Nitro" and "SquirrelFish" for Safari, etc.
35+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
3036
3137
Les termes ci-dessus sont bons à retenir, car ils sont utilisés dans les articles destinés aux développeurs sur Internet. Nous les utiliserons aussi. Par exemple, si "une fonctionnalité X est prise en charge par V8", cela fonctionne probablement dans Chrome et Opera.
3238

@@ -109,10 +115,18 @@ Les outils modernes rendent la [transpilation](https://fr.wiktionary.org/wiki/tr
109115

110116
Les exemples de ce genre de langages :
111117

118+
<<<<<<< HEAD
112119
- [CoffeeScript](http://coffeescript.org/) est un "sucre syntaxique" pour JavaScript, il introduit une syntaxe plus courte, permettant d’écrire du code plus précis et plus clair. Habituellement, les développeurs Ruby l'aiment bien.
113120
- [TypeScript](http://www.typescriptlang.org/) se concentre sur l'ajout de "typage strict des données" pour simplifier le développement et la prise en charge de systèmes complexes. Il est développé par Microsoft.
114121
- [Flow](http://flow.org/) ajoute également la saisie de données, mais de manière différente. Développé par Facebook.
115122
- [Dart](https://www.dartlang.org/) est un langage autonome doté de son propre moteur qui s'exécute dans des environnements autres que les navigateurs (comme les applications mobiles). Il était initialement proposé par Google en remplacement de JavaScript, mais pour le moment, les navigateurs exigent qu’il soit transposé en JavaScript, tout comme ceux ci-dessus.
123+
=======
124+
- [CoffeeScript](http://coffeescript.org/) is a "syntactic sugar" for JavaScript. It introduces shorter syntax, allowing us to write clearer and more precise code. Usually, Ruby devs like it.
125+
- [TypeScript](http://www.typescriptlang.org/) is concentrated on adding "strict data typing" to simplify the development and support of complex systems. It is developed by Microsoft.
126+
- [Flow](http://flow.org/) also adds data typing, but in a different way. Developed by Facebook.
127+
- [Dart](https://www.dartlang.org/) is a standalone language that has its own engine that runs in non-browser environments (like mobile apps), but also can be transpiled to JavaScript. Developed by Google.
128+
- [Brython](https://brython.info/) is a Python transpiler to JavaScript that allow to write application in pure Python without JavaScript.
129+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
116130
117131
Il en existe évidemment bien plus, cela dit, même si nous utilisons un de ces langages, nous devrions également connaître le langage JavaScript, pour bien comprendre ce que nous faisons.
118132

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,18 @@ const bigInt = 1234567890123456789012345678901234567890n;
8282
8383
Comme les chiffres `BigInt` sont rarement nécessaires, nous leur avons consacré un chapitre dédié <info:bigint>. Lisez-le lorsque vous avez besoin d'aussi gros chiffres.
8484
85+
<<<<<<< HEAD
8586
```smart header="Problèmes de compatibilité"
8687
À l'heure actuelle, `BigInt` est pris en charge dans Firefox/Chrome/Edge, mais pas dans Safari/IE.
88+
=======
89+
90+
```smart header="Compatibility issues"
91+
Right now, `BigInt` is supported in Firefox/Chrome/Edge/Safari, but not in IE.
92+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
8793
```
8894
95+
You can check [*MDN* BigInt compatibility table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#Browser_compatibility) to know which versions of a browser are supported.
96+
8997
## String
9098
9199
Une chaîne de caractères en JavaScript doit être entre guillemets.
@@ -128,7 +136,11 @@ Nous couvrirons les chaînes de caractères plus en détails dans le chapitre <i
128136
```smart header="Il n'y a pas de type *character*."
129137
Dans certaines langues, il existe un type spécial "character" pour un seul caractère. Par exemple, en langage C et en Java, il s'agit de "char".
130138
139+
<<<<<<< HEAD
131140
En JavaScript, il n'y a pas un tel type. Il n’ya qu’un seul type : `string`. Une chaîne de caractères ne peut comporter qu'un seul caractère ou plusieurs.
141+
=======
142+
In JavaScript, there is no such type. There's only one type: `string`. A string may consist of zero characters (be empty), one character or many of them.
143+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
132144
```
133145
134146
## Boolean (type logique)
@@ -257,6 +269,7 @@ Les trois dernières lignes peuvent nécessiter des explications supplémentaire
257269
258270
Il existe 8 types de données de base en JavaScript.
259271
272+
<<<<<<< HEAD
260273
- `number` pour les nombres de toute nature : entier ou virgule flottante, les nombres entiers sont limités à ±2<sup>53</sup>.
261274
- `bigint` pour des nombres entiers de longueur arbitraire.
262275
- `string` pour les chaînes de caractères. Une chaîne de caractères peut avoir un ou plusieurs caractères, il n’existe pas de type à caractère unique distinct.
@@ -265,6 +278,16 @@ Il existe 8 types de données de base en JavaScript.
265278
- `undefined` pour les valeurs non attribuées - un type autonome avec une valeur unique `undefined`.
266279
- `object` pour des structures de données plus complexes.
267280
- `symbol` pour les identifiants uniques.
281+
=======
282+
- `number` for numbers of any kind: integer or floating-point, integers are limited by <code>±(2<sup>53</sup>-1)</code>.
283+
- `bigint` is for integer numbers of arbitrary length.
284+
- `string` for strings. A string may have zero or more characters, there's no separate single-character type.
285+
- `boolean` for `true`/`false`.
286+
- `null` for unknown values -- a standalone type that has a single value `null`.
287+
- `undefined` for unassigned values -- a standalone type that has a single value `undefined`.
288+
- `object` for more complex data structures.
289+
- `symbol` for unique identifiers.
290+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
268291
269292
L'opérateur `typeof` nous permet de voir quel type est stocké dans la variable.
270293

1-js/02-first-steps/06-alert-prompt-confirm/article.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,13 @@ Elle affiche une fenêtre modale avec un message texte, un champ de saisie pour
3030
`default`
3131
: Un deuxième paramètre facultatif, la valeur initiale du champ d'entrée.
3232

33+
<<<<<<< HEAD
3334
```smart header="Les crochets dans la syntaxe `[...]`"
3435
Les crochets autour de `default` dans la syntaxe ci-dessus indiquent que le paramètre est facultatif, non obligatoire.
36+
=======
37+
```smart header="The square brackets in syntax `[...]`"
38+
The square brackets around `default` in the syntax above denote that the parameter is optional, not required.
39+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
3540
```
3641
3742
Le visiteur peut taper quelque chose dans le champ de saisie d'invite et appuyer sur OK. Ensuite, nous obtenons ce texte dans le `result`. Ou ils peuvent annuler l'entrée en appuyant sur Annuler ou en appuyant sur la touche `key:Esc`, puis nous obtenons `null` comme `result`.

1-js/02-first-steps/08-operators/4-fix-prompt/solution.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ let b = "2"; // prompt("Second number?", 2);
99
alert(a + b); // 12
1010
```
1111

12+
<<<<<<< HEAD
1213
Ce que nous devons faire est de convertir les chaînes de caractères en nombres avant `+`. Par exemple, en utilisant `Number()` ou en les ajoutant au début avec `+`.
14+
=======
15+
What we should do is to convert strings to numbers before `+`. For example, using `Number()` or prepending them with `+`.
16+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
1317
1418
Par exemple, juste avant `prompt` :
1519

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,11 @@ Les parenthèses outrepassent toute priorité, donc si nous ne sommes pas satisf
180180

181181
Il y a beaucoup d'opérateurs en JavaScript. Chaque opérateur a un numéro correspondant à sa priorité de précédence. Celui qui est plus haut sur le tableau s'exécute en premier. Si la priorité est la même, l'ordre d'exécution est de gauche à droite.
182182

183+
<<<<<<< HEAD
183184
Un extrait du [tableau de précédence](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Pr%C3%A9c%C3%A9dence_des_op%C3%A9rateurs#Tableau) (vous n'avez pas besoin de vous en souvenir, mais notez que les opérateurs unaires ont une prioritée plus élevée que les binaires correspondants) :
185+
=======
186+
Here's an extract from the [precedence table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence) (you don't need to remember this, but note that unary operators are higher than corresponding binary ones):
187+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
184188
185189
| Précédence | Nom | Symbole |
186190
|------------|-----------------|---------|
@@ -428,7 +432,11 @@ La liste des opérateurs :
428432
- RIGHT SHIFT ( `>>` )
429433
- ZERO-FILL RIGHT SHIFT ( `>>>` )
430434

435+
<<<<<<< HEAD
431436
Ces opérateurs sont très rarement utilisés. Pour les comprendre, nous devrions nous intéresser à la représentation numérique de bas niveau, et il ne serait pas optimal de le faire dès maintenant. Surtout parce que nous n’en aurons pas besoin de sitôt. Si vous êtes curieux, vous pouvez lire l'article [Opérateurs binaires](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Op%C3%A9rateurs_binaires) sur MDN. Il serait plus pratique de le faire quand un besoin réel se fait sentir.
437+
=======
438+
These operators are used very rarely, when we need to fiddle with numbers on the very lowest (bitwise) level. We won't need these operators any time soon, as web development has little use of them, but in some special areas, such as cryptography, they are useful. You can read the [Bitwise Operators](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) chapter on MDN when a need arises.
439+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
432440

433441
## Virgule
434442

1-js/02-first-steps/09-comparison/1-comparison-questions/solution.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,20 @@ null === +"\n0\n" → false
1212

1313
Quelques raisons :
1414

15+
<<<<<<< HEAD
1516
1. Évidemment, c'est vrai.
1617
2. Comparaison du dictionnaire, donc fausse. `"a"` est plus petit que `"p"`.
1718
3. Encore une fois, comparaison du dictionnaire, le premier caractère de `"2"` est plus grand que le premier caractère de` "1"`.
1819
4. Les valeurs `null` et `undefined` sont exclusivement égale entre elles.
1920
5. L'égalité stricte est stricte. Des types différents des deux côtés conduisent à `false`.
2021
6. Similaire à `(4)`, `null` n'est égale qu'à `undefined`.
2122
7. Egalité stricte de différents types.
23+
=======
24+
1. Obviously, true.
25+
2. Dictionary comparison, hence false. `"a"` is smaller than `"p"`.
26+
3. Again, dictionary comparison, first char `"2"` is greater than the first char `"1"`.
27+
4. Values `null` and `undefined` equal each other only.
28+
5. Strict equality is strict. Different types from both sides lead to false.
29+
6. Similar to `(4)`, `null` only equals `undefined`.
30+
7. Strict equality of different types.
31+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca

1-js/02-first-steps/09-comparison/article.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ Il y a de nombreux opérateurs de comparaison que nous connaissons des mathémat
99

1010
## Booléen est le résultat
1111

12+
<<<<<<< HEAD
1213
Tout comme tous les autres opérateurs, une comparaison renvoie une valeur. Cette valeur est du type booléen.
1314

1415
- `true` -- signifie "oui", "correct" ou "vrai".
1516
- `false` -- signifie "non", "incorrect" ou "faux".
17+
=======
18+
In this article we'll learn more about different types of comparisons, how JavaScript makes them, including important peculiarities.
19+
20+
At the end you'll find a good recipe to avoid "JavaScript quirks"-related issues.
21+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
1622
1723
Par exemple :
1824

@@ -51,7 +57,13 @@ L'algorithme pour comparer deux chaînes de caractères est simple :
5157
4. Répéter jusqu'à la fin d'une chaîne de caractères.
5258
5. Si les deux chaînes de caractères se sont terminées simultanément, alors elles sont égales. Sinon, la chaîne la plus longue est plus grande.
5359

60+
<<<<<<< HEAD
5461
Dans l'exemple ci-dessus, la comparaison `'Z' > 'A'` obtient le résultat à la première étape.
62+
=======
63+
In the first example above, the comparison `'Z' > 'A'` gets to a result at the first step.
64+
65+
The second comparison `'Glow'` and `'Glee'` needs more steps as strings are compared character-by-character:
66+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
5567
5668
Les chaînes de caractères `"Glow"` et `"Glee"` sont comparées caractère par caractère :
5769

1-js/02-first-steps/11-logical-operators/6-check-if-in-range/task.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ importance: 3
44

55
# Vérifiez la plage entre
66

7+
<<<<<<< HEAD
78
Ecrivez une condition `"if"` pour vérifier que l’`age` est compris entre `14` et `90` ans (inclus).
9+
=======
10+
Write an `if` condition to check that `age` is between `14` and `90` inclusively.
11+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
812
913
"Inclus" signifie que l’`age` peut atteindre les `14` ou `90` ans.

1-js/02-first-steps/11-logical-operators/7-check-if-out-range/task.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ importance: 3
44

55
# Vérifiez à l'extérieur de la plage
66

7+
<<<<<<< HEAD
78
Ecrivez une condition `if` pour vérifier que l’`age` n’est PAS compris entre `14` et `90` ans.
9+
=======
10+
Write an `if` condition to check that `age` is NOT between `14` and `90` inclusively.
11+
>>>>>>> 181cc781ab6c55fe8c43887a0c060db7f93fb0ca
812
913
Créez deux variantes: la première utilisant NOT `!`, La seconde - sans ce dernier.

1-js/02-first-steps/11-logical-operators/9-check-login/solution.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33
```js run demo
44
let userName = prompt("Who's there?", '');
55

6-
if (userName == 'Admin') {
6+
if (userName === 'Admin') {
77

88
let pass = prompt('Password?', '');
99

10-
if (pass == 'TheMaster') {
10+
if (pass === 'TheMaster') {
1111
alert( 'Welcome!' );
12-
} else if (pass == '' || pass == null) {
12+
} else if (pass === '' || pass === null) {
1313
alert( 'Canceled' );
1414
} else {
1515
alert( 'Wrong password' );
1616
}
1717

18-
} else if (userName == '' || userName == null) {
18+
} else if (userName === '' || userName === null) {
1919
alert( 'Canceled' );
2020
} else {
2121
alert( "I don't know you" );

0 commit comments

Comments
 (0)