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/01-getting-started/1-intro/article.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,7 +67,12 @@ Les exemples de telles restrictions sont:
67
67
68
68
Les navigateurs modernes lui permettent de fonctionner avec des fichiers, mais l'accès est limité et n'est fourni que si l'utilisateur effectue certaines actions, comme «déposer» un fichier dans une fenêtre de navigateur ou le sélectionner via une balise `<input>`.
69
69
70
+
<<<<<<< HEAD
70
71
Il existe des moyens d’interagir avec une webcam/microphone et d’autres appareils, mais ils nécessitent une autorisation explicite de l’utilisateur. Ainsi, une page compatible avec JavaScript ne permet pas d'activer une caméra Web, d'observer l'environnement et d'envoyer les informations à la [NSA](https://fr.wikipedia.org/wiki/National_Security_Agency).
72
+
=======
73
+
There are ways to interact with camera/microphone and other devices, but they require a user's explicit permission. So a JavaScript-enabled page may not sneakily enable a web-camera, observe the surroundings and send the information to the [NSA](https://en.wikipedia.org/wiki/National_Security_Agency).
74
+
- Different tabs/windows generally do not know about each other. Sometimes they do, for example when one window uses JavaScript to open the other one. But even in this case, JavaScript from one page may not access the other if they come from different sites (from a different domain, protocol or port).
75
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
71
76
72
77
- Différents onglets / fenêtres ne se connaissent généralement pas. Parfois, ils se croisent, par exemple lorsqu'une fenêtre utilise JavaScript pour ouvrir l'autre. Mais même dans ce cas, le JavaScript d'une page ne peut pas accéder à l'autre si elle provient de sites différents (provenant d'un autre domaine, protocole ou port).
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/4-devtools/article.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,11 @@ Pour voir les erreurs et obtenir beaucoup d’informations utiles sur les script
8
8
9
9
Le plus souvent, les développeurs se tournent vers Chrome ou Firefox pour le développement, car ces navigateurs disposent des meilleurs outils de développement. D'autres navigateurs fournissent également des outils de développement, parfois dotés de fonctions spéciales, mais jouent généralement le rôle de "rattrapage" pour Chrome ou Firefox. Donc, la plupart des gens ont un navigateur "favori" et passent à d'autres si un problème est spécifique au navigateur.
10
10
11
+
<<<<<<< HEAD
11
12
Les outils de développement sont très puissants, il existe de nombreuses fonctionnalités. Pour commencer, nous allons apprendre à les ouvrir, à examiner les erreurs et à exécuter des commandes JavaScript.
13
+
=======
14
+
Developer tools are potent, they have many features. To start, we'll learn how to open them, look at errors, and run JavaScript commands.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,12 @@ Actuellement, Babel comporte deux parties :
23
23
24
24
2. Ensuite, le polyfill.
25
25
26
+
<<<<<<< HEAD
26
27
Les nouvelles fonctionnalités du langage peuvent inclure de nouvelles fonctions intégrées et de nouvelles constructions de syntaxe. Le transpiler réécrit le code en transformant les nouvelles constructions de syntaxe en anciennes. Mais en ce qui concerne les nouvelles fonctions intégrées, nous devons les implémenter. JavaScript est un langage très dynamique, les scripts peuvent ajouter / modifier n’importe quelle fonction, afin qu’ils se comportent conformément au standard moderne.
28
+
=======
29
+
New language features may include not only syntax constructs, but also built-in functions.
30
+
The transpiler rewrites the code, transforming syntax constructs into older ones. But as for new built-in functions, we need to implement them. JavaScript is a highly dynamic language, scripts may add/modify any functions, so that they behave according to the modern standard.
31
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
27
32
28
33
Un script qui met à jour / ajoute de nouvelles fonctions s'appelle "polyfill". Il "comble" le vide et ajoute les implémentations manquantes.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/03-garbage-collection/article.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,11 @@ En termes simples, les valeurs "accessibles" sont celles qui sont accessibles ou
23
23
24
24
2. Toute autre valeur est considérée comme accessible si elle est accessible depuis une racine par une référence ou par une chaîne de références.
25
25
26
+
<<<<<<< HEAD
26
27
Par exemple, s’il existe un objet dans une variable globale et que cet objet a une propriété référençant un autre objet, cet objet est considéré comme accessible. Et ceux auxquels il fait référence sont également accessibles. Des exemples détaillés à suivre.
28
+
=======
29
+
For instance, if there's an object in a global variable, and that object has a property referencing another object, *that* object is considered reachable. And those that it references are also reachable. Detailed examples to follow.
30
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
27
31
28
32
Il existe un processus d’arrière-plan dans le moteur JavaScript appelé [Ramasse-miettes (Garbage Collector)](https://fr.wikipedia.org/wiki/Ramasse-miettes_(informatique)). Il surveille tous les objets et supprime ceux qui sont devenus inaccessibles.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/07-optional-chaining/article.md
+99-6Lines changed: 99 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,17 +12,29 @@ Le chaînage optionnel `?.` Est un moyen sécurisé d'accéder aux propriétés
12
12
13
13
Si vous venez de commencer à lire le tutoriel et à apprendre JavaScript, peut-être que le problème ne vous a pas encore touché, mais c'est assez courant.
14
14
15
+
<<<<<<< HEAD
15
16
16
17
À titre d'exemple, considérons les objets pour les données utilisateur. La plupart de nos utilisateurs ont des adresses dans la propriété `user.address`, avec la rue `user.address.street`, mais certains ne les ont pas fournies.
17
18
Dans ce cas, lorsque nous tentons d'obtenir `user.address.street`, nous obtenons une erreur :
18
19
19
20
```js run
20
21
let user = {}; // l'utilisateur sans propriété "address"
21
22
23
+
=======
24
+
As an example, let's say we have `user` objects that hold the information about our users.
25
+
26
+
Most of our users have addresses in `user.address` property, with the street `user.address.street`, but some did not provide them.
27
+
28
+
In such case, when we attempt to get `user.address.street`, and the user happens to be without an address, we get an error:
29
+
30
+
```js run
31
+
let user = {}; // a user without "address" property
32
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
22
33
23
34
alert(user.address.street); // Error!
24
35
```
25
36
37
+
<<<<<<< HEAD
26
38
27
39
C'est le résultat attendu, JavaScript fonctionne comme ça, mais dans de nombreux cas pratiques, nous préférerions obtenir `undefined` au lieu d'une erreur (signifiant "pas de rue").
28
40
@@ -37,32 +49,98 @@ let html = document.querySelector('.my-element').innerHTML;
37
49
Avant l'apparition de `?.` Dans le langage, l'opérateur `&&` était utilisé pour contourner ce problème.
38
50
39
51
Par exemple :
52
+
=======
53
+
That's the expected result. JavaScript works like this. As`user.address` is `undefined`, an attempt to get `user.address.street` fails with an error.
54
+
55
+
In many practical cases we'd prefer to get `undefined` instead of an error here (meaning "no street").
56
+
57
+
...And another example. In the web development, we can get an object that corresponds to a web page element using a special method call, such as `document.querySelector('.elem')`, and it returns `null` when there's no such element.
58
+
59
+
```js run
60
+
// document.querySelector('.elem') is null if there's no element
61
+
let html = document.querySelector('.elem').innerHTML; // error if it's null
62
+
```
63
+
64
+
Once again, if the element doesn't exist, we'll get an error accessing `.innerHTML`of`null`. Andin some cases, when the absence of the element is normal, we'd like to avoid the error and just accept `html = null` as the result.
65
+
66
+
How can we do this?
67
+
68
+
The obvious solution would be to check the value using `if` or the conditional operator `?`, before accessing its property, like this:
It works, there's no error... But it's quite inelegant. As you can see, the `"user.address"` appears twice in the code. For more deeply nested properties, that becomes a problem as more repetitions are required.
77
+
78
+
E.g. let's try getting `user.address.street.name`.
79
+
80
+
We need to check both `user.address` and `user.address.street`:
Remarque: la syntaxe `?.` Rend facultative la valeur qui la précède, mais pas plus.
75
153
154
+
<<<<<<< HEAD
76
155
Dans l'exemple ci-dessus, `user?.` Permet uniquement à `user` d'être `null/undefined`.
77
156
78
157
D'un autre côté, si `user` existe, alors il doit avoir la propriété `user.address`, sinon `user?.address.street` donne une erreur au deuxième point.
158
+
=======
159
+
E.g. in `user?.address.street.name` the `?.` allows `user` to be `null/undefined`, but it's all it does. Further properties are accessed in a regular way. If we want some of them to be optional, then we'll need to replace more `.` with `?.`.
160
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
79
161
80
162
```warn header="N'abusez pas du chaînage optionnel"
81
163
Nous ne devrions utiliser `?.` que là où il est normal que quelque chose n'existe pas.
82
164
165
+
<<<<<<< HEAD
83
166
Par exemple, si selon notre logique de codage, l'objet `user` doit être là, mais que `address` est facultatif, alors `user.address?.street` serait mieux.
84
167
85
168
86
169
Donc, si `user` n'est pas défini en raison d'une erreur, nous verrons une erreur de programmation à ce sujet et la corrigerons. Sinon, les erreurs de codage peuvent être réduites au silence lorsqu'elles ne sont pas appropriées et devenir plus difficiles à déboguer.
170
+
=======
171
+
For example, if according to our coding logic `user` object must exist, but `address` is optional, then we should write `user.address?.street`, but not `user?.address?.street`.
172
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
87
173
88
174
```
89
175
@@ -94,9 +180,13 @@ S'il n'y a pas du tout de variable `user`, alors `user?.anything` déclenche une
94
180
// ReferenceError: user is not defined
95
181
user?.address;
96
182
```
183
+
<<<<<<< HEAD
97
184
98
185
Il doit y avoir une déclaration (par exemple `let/const/var user`). Le chaînage optionnel ne fonctionne que pour les variables déclarées.
99
186
187
+
=======
188
+
The variable must be declared (e.g. `let/const/var user` or as a function parameter). The optional chaining works only for declared variables.
189
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
100
190
````
101
191
102
192
## Court-circuit
@@ -129,17 +219,20 @@ Par exemple, `?.()` est utilisé pour exécuter une fonction seulement si elle e
129
219
Ainsi dans cet exemple la méthode `admin` n'existe pas pour tout le monde :
Il y a plus de fonctions et de constantes dans l'objet Math, y compris la trigonométrie, que vous pouvez trouver dans la [documentation de l'objet Math](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math).
412
413
413
414
## Résumé
415
+
=======
416
+
There are more functions and constants in `Math` object, including trigonometry, which you can find in the [docs for the Math object](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Math).
Copy file name to clipboardExpand all lines: 1-js/05-data-types/05-array-methods/2-filter-range/task.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,11 @@ importance: 4
4
4
5
5
# Filter range
6
6
7
+
<<<<<<< HEAD
7
8
Ecrivez une fonction `filterRange(arr, a, b)` qui obtient un tableau `arr`, recherche les éléments compris entre `a` et `b` et retourne un tableau.
9
+
=======
10
+
Write a function `filterRange(arr, a, b)` that gets an array `arr`, looks for elements with values higher or equal to `a` and lower or equal to `b` and return a result as an array.
11
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
8
12
9
13
La fonction ne doit pas modifier le tableau. Elle doit juste retourner le nouveau tableau.
Copy file name to clipboardExpand all lines: 1-js/05-data-types/05-array-methods/article.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -749,7 +749,13 @@ Ces méthodes sont les plus utilisées, elles couvrent 99% des cas d'utilisation
749
749
750
750
La fonction `fn` est appelée sur chaque élément du tableau comme pour `map`. Si n'importe quel/tous les résultats sont `true`, il retourne vrai, sinon il retourne `false`.
751
751
752
+
<<<<<<< HEAD
752
753
Ces méthodes se comportent en quelque sorte comme les opérateurs `||` et `&&` : si `fn` renvoie une valeur vraie, `arr.some()` retourne immédiatement `true` et arrête d'itérer sur les autres éléments ; si `fn` renvoie une valeur fausse, `arr.every()` retourne immédiatement `false` et arrête également d'itérer sur les autres éléments.
754
+
=======
755
+
The function `fn` is called on each element of the array similar to `map`. If any/all results are `true`, returns `true`, otherwise `false`.
756
+
757
+
These methods behave sort of like `||` and `&&` operators: if `fn` returns a truthy value, `arr.some()` immediately returns `true` and stops iterating over the rest items; if `fn` returns a falsy value, `arr.every()` immediately returns `false` and stops iterating over the rest items as well.
758
+
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
753
759
754
760
On peut utiliser `every` pour compaere les tableaux :
0 commit comments