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: 0 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,12 +67,7 @@ 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
71
70
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
76
71
77
72
- 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
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,11 +8,7 @@ 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
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.
15
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
11
+
Les outils de développement sont très puissants, ils possèdent de nombreuses fonctionnalités. Pour commencer, nous allons apprendre à les ouvrir, à examiner les erreurs et à exécuter des commandes JavaScript.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
+2-6Lines changed: 2 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,12 +23,8 @@ Actuellement, Babel comporte deux parties :
23
23
24
24
2. Ensuite, le polyfill.
25
25
26
-
<<<<<<< HEAD
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
26
+
Les nouvelles fonctionnalités du langage peuvent inclure de nouvelles fonctions intégrées et de nouvelles constructions de syntaxe.
27
+
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.
32
28
33
29
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
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,11 +23,7 @@ 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
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
26
+
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.
31
27
32
28
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
+31-90Lines changed: 31 additions & 90 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,135 +12,95 @@ 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
16
15
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.
18
-
Dans ce cas, lorsque nous tentons d'obtenir `user.address.street`, nous obtenons une erreur :
16
+
À titre d'exemple, disons que nous avons des objets `user` qui contiennent les informations sur nos utilisateurs.
19
17
20
-
```js run
21
-
let user = {}; // l'utilisateur sans propriété "address"
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.
18
+
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.
27
19
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:
20
+
Dans ce cas, lorsque nous essayons d'obtenir `user.address.street`, et que l'utilisateur se trouve sans adresse, nous obtenons une erreur :
29
21
30
22
```js run
31
-
let user = {}; // a user without "address" property
32
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
23
+
let user = {}; //un utilisateur sans propriété "address"
24
+
33
25
34
26
alert(user.address.street); // Error!
35
27
```
36
28
37
-
<<<<<<< HEAD
38
-
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").
29
+
C'est le résultat attendu. JavaScript fonctionne comme ça. Comme `user.address` est `undefined`, une tentative d'obtention de `user.address.street` échoue avec une erreur.
40
30
41
-
... Et un autre exemple. Dans le développement Web, nous pouvons avoir besoin d'obtenir une information sur un élément de la page, qui n'existe parfois pas:
31
+
Dans de nombreux cas pratiques, nous préférerions obtenir `undefined` au lieu d'une erreur ici (signifiant "pas de rue").
42
32
33
+
... Et un autre exemple. Dans le développement Web, nous pouvons obtenir un objet qui correspond à un élément de page Web à l'aide d'un appel de méthode spécial, tel que `document.querySelector('.elem')`, et il renvoie `null` lorsqu'il n'y a pas ce type d'élément.
43
34
44
35
```js run
45
-
// Erreur si le résultat de querySelector(...) est null
46
-
let html = document.querySelector('.my-element').innerHTML;
47
-
```
48
-
49
-
Avant l'apparition de `?.` Dans le langage, l'opérateur `&&` était utilisé pour contourner ce problème.
50
-
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
36
+
// document.querySelector('.elem') est nul s'il n'y a pas d'élément
61
37
let html =document.querySelector('.elem').innerHTML; // error if it's null
62
38
```
63
39
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.
40
+
Encore une fois, si l'élément n'existe pas, nous obtiendrons une erreur lors de l'accès à `.innerHTML`de`null`. Et dans certains cas, lorsque l'absence de l'élément est normale, nous aimerions éviter l'erreur et accepter simplement `html = null`comme résultat.
65
41
66
-
How can we do this?
42
+
Comment peut-on le faire ?
67
43
68
-
The obvious solution would be to check the value using `if` or the conditional operator `?`, before accessing its property, like this:
44
+
La solution évidente serait de vérifier la valeur en utilisant `if`ou l'opérateur conditionnel `?`, Avant d'accéder à sa propriété, comme ceci :
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.
52
+
Cela fonctionne, il n'y a pas d'erreur ... Mais c'est assez inélégant. Comme vous pouvez le voir, `"user.address"`apparaît deux fois dans le code. Pour des propriétés plus profondément imbriquées, cela devient un problème car plus de répétitions sont nécessaires.
77
53
78
-
E.g. let's try getting`user.address.street.name`.
54
+
Par exemple. essayons d'obtenir`user.address.street.name`.
79
55
80
-
We need to check both `user.address`and`user.address.street`:
56
+
Nous devons vérifier à la fois `user.address`et`user.address.street`:
That's just awful, one may even have problems understanding such code.
64
+
C'est juste horrible, on peut même avoir des problèmes pour comprendre un tel code.
89
65
90
-
Don't even care to, as there's a better way to write it, using the `&&` operator:
91
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
66
+
Ne vous en souciez même pas, car il existe une meilleure façon de l'écrire, en utilisant l'opérateur `&&` :
92
67
93
68
```js run
94
69
let user = {}; // l'utilisateur n'a pas d'adresse
95
70
96
71
alert( user.address&&user.address.street&&user.address.street.name ); // undefined (no error)
97
72
```
98
73
99
-
<<<<<<< HEAD
100
-
=======
101
-
AND'ing the whole path to the property ensures that all components exist (if not, the evaluation stops), but also isn't ideal.
74
+
Et le chemin complet vers la propriété garantit que tous les composants existent (sinon, l'évaluation s'arrête), mais n'est pas non plus idéal.
102
75
103
-
As you can see, property names are still duplicated in the code. E.g. in the code above, `user.address`appears three times.
76
+
Comme vous pouvez le voir, les noms de propriétés sont toujours dupliqués dans le code. Par exemple. dans le code ci-dessus, `user.address`apparaît trois fois.
104
77
105
-
That's why the optional chaining `?.` was added to the language. To solve this problem once and for all!
106
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
78
+
C'est pourquoi le chaînage facultatif `?.` A été ajouté au langage. Pour résoudre ce problème une fois pour toutes !
107
79
108
80
ET l'ensemble du chemin d'accès à la propriété garantit que tous les composants existent (sinon, l'évaluation s'arrête), mais est difficile à écrire.
109
81
110
82
111
83
## Chaînage optionnel
112
84
113
-
<<<<<<< HEAD
114
-
Le chaînage facultatif `?.` Arrête l'évaluation et renvoie `undefined` si la partie avant `?.` est `undefined` ou `null`.
115
-
=======
116
-
The optional chaining `?.` stops the evaluation if the part before `?.` is `undefined` or `null` and returns that part.
117
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
85
+
Le chaînage facultatif `?.` arrête l'évaluation et renvoie `undefined` si la partie avant `?.` est `undefined` ou `null` et renvoie cette partie.
118
86
119
87
**Plus loin dans cet article, par souci de brièveté, nous dirons que quelque chose "existe" si ce n'est pas "null" et non "undefined".**
120
88
121
-
<<<<<<< HEAD
122
-
Voici le moyen sûr d'accéder `user.address.street` :
123
-
=======
124
-
In other words, `value?.prop`:
125
-
- is the same as `value.prop` if `value` exists,
126
-
- otherwise (when `value` is `undefined/null`) it returns `undefined`.
89
+
En d'autres termes, `value?.prop` :
90
+
- est identique à `value.prop` si `value` existe,
91
+
- sinon (lorsque `value` est `undefined/nul`), il renvoie `undefined`.
127
92
128
-
Here's the safe way to access `user.address.street` using `?.`:
129
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
93
+
Voici le moyen sûr d'accéder à `user.address.street` en utilisant `?.` :
130
94
131
95
```js run
132
96
let user = {}; // l'utilisateur n'a pas d'adresse
133
97
134
98
alert( user?.address?.street ); // undefined (no error)
135
99
```
136
100
137
-
<<<<<<< HEAD
138
-
La lecture de l'adresse avec `user?.address` fonctionne même si l'objet `user` n'existe pas :
139
-
=======
140
-
The code is short and clean, there's no duplication at all.
101
+
Le code est court et propre, il n'y a aucune duplication.
141
102
142
-
Reading the address with `user?.address` works even if `user` object doesn't exist:
143
-
>>>>>>> 99e59ba611ab11319ef9d0d66734b0bea2c3f058
103
+
La lecture de l'adresse avec `user?.address` fonctionne même si l'objet `user` n'existe pas :
Remarque: la syntaxe `?.` Rend facultative la valeur qui la précède, mais pas plus.
153
113
154
-
<<<<<<< HEAD
155
-
Dans l'exemple ci-dessus, `user?.` Permet uniquement à `user` d'être `null/undefined`.
156
-
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
114
+
Par exemple. dans `user?.address.street.name` le `?.` permet à `user` d'être `null/undefined`, mais c'est tout ce qu'il fait. D'autres propriétés sont accessibles de manière régulière. Si nous voulons que certains d'entre eux soient optionnels, alors nous devrons remplacer plus de `.` par `?.`.
161
115
162
116
```warn header="N'abusez pas du chaînage optionnel"
163
117
Nous ne devrions utiliser `?.` que là où il est normal que quelque chose n'existe pas.
164
118
165
-
<<<<<<< HEAD
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.
167
-
168
-
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
119
+
Par exemple, si selon notre logique de codage, l'objet `user` doit exister, mais que `address` est facultatif, alors nous devrions écrire `user.address?.street`, mais pas `user?.address?.street`.
173
120
174
121
```
175
122
@@ -180,13 +127,7 @@ S'il n'y a pas du tout de variable `user`, alors `user?.anything` déclenche une
180
127
// ReferenceError: user is not defined
181
128
user?.address;
182
129
```
183
-
<<<<<<< HEAD
184
-
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.
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
130
+
La variable doit être déclarée (par exemple `let/const/varuser` ouentantqueparamètredefonction). Lechaînagefacultatifnefonctionnequepourlesvariablesdéclarées.
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).
413
412
414
413
## 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
+1-5Lines changed: 1 addition & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,7 @@ importance: 4
4
4
5
5
# Filter range
6
6
7
-
<<<<<<< HEAD
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
7
+
Ecrivez une fonction `filterRange(arr,a,b)` qui obtient un tableau `arr`, recherche les éléments avec des valeurs supérieures ou égales à `a` et inférieures ou égales à `b` et retourne un résultat sous forme de tableau.
12
8
13
9
La fonction ne doit pas modifier le tableau. Elle doit juste retourner le nouveau tableau.
0 commit comments