Skip to content

Commit bf7b465

Browse files
authored
Merge pull request #312 from HachemiH/master
Conflicts fixed after sync with upstream @ 8558fa8
2 parents f0fc02b + 5654a4e commit bf7b465

File tree

26 files changed

+150
-487
lines changed

26 files changed

+150
-487
lines changed

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

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,15 @@ Voyons ce qui est spécial à propos de JavaScript, ce qu'il nous permet de fair
44

55
<iframe width="560" height="315" src="https://www.youtube.com/embed/-eEx3yRZ-sE" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
66

7-
87
## Qu'est-ce que JavaScript?
98

10-
*JavaScript* a été initiallement créé pour "rendre les pages web vivantes".
9+
_JavaScript_ a été initiallement créé pour "rendre les pages web vivantes".
1110

12-
Les programmes dans ce langage sont appelés *scripts*. Ils peuvent être écrits directement dans une page HTML et exécutés automatiquement au chargement des pages.
11+
Les programmes dans ce langage sont appelés _scripts_. Ils peuvent être écrits directement dans une page HTML et exécutés automatiquement au chargement des pages.
1312

1413
Les scripts sont fournis et exécutés en texte brut. Ils n'ont pas besoin d'une préparation spéciale ou d'une compilation pour fonctionner.
1514

16-
De part cet aspect, JavaScript est très différent d'un autre langage appelé [Java](https://fr.wikipedia.org/wiki/Java_(langage)).
15+
De part cet aspect, JavaScript est très différent d'un autre langage appelé [Java](<https://fr.wikipedia.org/wiki/Java_(langage)>).
1716

1817
```smart header="Pourquoi est-il appelé <u>Java</u>Script ?"
1918
Quand Javascript a été créé, il portait initialement un autre nom : "LiveScript". Mais à cette époque le langage Java était très populaire, il a donc été décidé que positionner un nouveau langage en tant que "petit frère" de Java pourrait aider.
@@ -27,15 +26,9 @@ Le navigateur a un moteur intégré, parfois il peut être également appelé "l
2726

2827
Différents moteurs ont différents "nom de code", par exemple:
2928

30-
<<<<<<< HEAD
31-
- [V8](https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)) -- dans Chrome et Opera.
29+
- [V8](<https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)>) -- dans Chrome et Opera.
3230
- [SpiderMonkey](https://fr.wikipedia.org/wiki/SpiderMonkey) -- dans Firefox.
33-
- … 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.
34-
=======
35-
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome and Opera.
36-
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
37-
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
38-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
31+
- … Il existe d'autres noms de code comme "Chakra" pour IE, "JavaScriptCore", "Nitro" et "SquirrelFish" pour Safari etc.
3932

4033
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.
4134

@@ -47,7 +40,7 @@ Les moteurs sont compliqués. Mais le fonctionnement de base est facile à compr
4740
2. Ensuite, il convertit ("compile") le script en langage machine.
4841
3. Enfin le code machine s'exécute, très rapidement.
4942
50-
Le moteur applique des optimisations à chaque étape du processus. Il surveille même le script compilé en cours d'exécution, analyse les données qui le traversent et applique des optimisations au code machine en fonction de ces informations.
43+
Le moteur applique des optimisations à chaque étape du processus. Il surveille même le script compilé en cours d'exécution, analyse les données qui le traversent et applique des optimisations au code machine en fonction de ces informations.
5144
```
5245

5346
## Que peut faire JavaScript dans le navigateur ?
@@ -58,31 +51,31 @@ Les fonctionnalités dépendent grandement de l'environnement qui exécute JavaS
5851

5952
JavaScript intégré au navigateur peut faire tout ce qui concerne la manipulation des pages Web, l'interaction avec l'utilisateur et le serveur Web.
6053

61-
Par exemple, JavaScript dans le navigateur est capable de :
54+
Par exemple, JavaScript dans le navigateur est capable de :
6255

6356
- Ajoutez un nouveau code HTML à la page, modifiez le contenu existant, modifiez les styles.
6457
- Réagir aux actions de l'utilisateur, s'exécuter sur des clics de souris, des mouvements de pointeur, des appuis sur des touches.
65-
- Envoyer des requêtes sur le réseau à des serveurs distants, télécharger et envoyer des fichiers (technologies [AJAX](https://fr.wikipedia.org/wiki/Ajax_(informatique)) et [COMET](https://fr.wikipedia.org/wiki/Comet_(informatique))).
58+
- Envoyer des requêtes sur le réseau à des serveurs distants, télécharger et envoyer des fichiers (technologies [AJAX](<https://fr.wikipedia.org/wiki/Ajax_(informatique)>) et [COMET](<https://fr.wikipedia.org/wiki/Comet_(informatique)>)).
6659
- Obtenir et définir des cookies, poser des questions au visiteur, afficher des messages.
6760
- Se souvenir des données du côté client ("stockage local").
6861

69-
## Qu'est-ce que JavaScript ne peut pas faire dans le navigateur ?
62+
## Qu'est-ce que JavaScript ne peut pas faire dans le navigateur ?
7063

7164
Les capacités de JavaScript dans le navigateur sont limitées pour la sécurité de l'utilisateur. L'objectif est d'empêcher une page Web malfaisante d'accéder à des informations privées ou de nuire aux données de l'utilisateur.
7265

7366
Les exemples de telles restrictions sont:
7467

7568
- JavaScript sur une page Web ne peut pas lire/écrire des fichiers arbitrairement sur le disque dur, les copier ou exécuter des programmes. Il n'a pas d'accès direct aux fonctions du système d'exploitation.
7669

77-
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>`.
70+
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>`.
7871

79-
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+
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).
8073

8174
- 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).
8275

83-
C'est ce qu'on appelle la "politique de même origine" (“Same Origin Policy”). Pour contourner cette sécurité, *les deux pages* doivent se mettre d'accord et contenir un code JavaScript spécial qui gère l'échange de données. Nous allons voir cela plus loin dans ce tutoriel.
76+
C'est ce qu'on appelle la "politique de même origine" (“Same Origin Policy”). Pour contourner cette sécurité, _les deux pages_ doivent se mettre d'accord et contenir un code JavaScript spécial qui gère l'échange de données. Nous allons voir cela plus loin dans ce tutoriel.
8477

85-
Cette limitation concerne également la sécurité de l'utilisateur. Une page de `http://autresite.com` qu'un utilisateur a ouverte ne doit pas pouvoir accéder à un autre onglet du navigateur avec l'URL `http://gmail.com` et y voler des informations.
78+
Cette limitation concerne également la sécurité de l'utilisateur. Une page de `http://autresite.com` qu'un utilisateur a ouverte ne doit pas pouvoir accéder à un autre onglet du navigateur avec l'URL `http://gmail.com` et y voler des informations.
8679

8780
- JavaScript peut facilement communiquer sur le net avec le serveur d'où provient la page en cours. Mais sa capacité à recevoir des données d'autres sites / domaines est paralysée. Bien que possible, il nécessite un accord explicite (exprimé dans les en-têtes HTTP) du côté distant. Encore une fois, ce sont des limites de sécurité.
8881

@@ -112,7 +105,7 @@ La syntaxe de JavaScript ne convient pas aux besoins de tous. Différentes perso
112105

113106
Il faut s’y attendre, parce que les projets et les exigences sont différents pour tous.
114107

115-
Donc, récemment, une pléthore de nouveaux langages sont apparus, qui sont *transposés* (convertis) en JavaScript avant leur exécution dans le navigateur.
108+
Donc, récemment, une pléthore de nouveaux langages sont apparus, qui sont _transposés_ (convertis) en JavaScript avant leur exécution dans le navigateur.
116109

117110
Les outils modernes rendent la [transpilation](https://fr.wiktionary.org/wiki/transpilation) très rapide et transparente, permettant aux développeurs de coder dans une autre langue et de la convertir automatiquement "sous le capot".
118111

1-js/02-first-steps/02-structure/article.md

Lines changed: 25 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Structure du code
1+
# Structure du code
22

33
La première chose à apprendre est de construire des blocs de code.
44

@@ -13,14 +13,14 @@ Nous pouvons avoir autant d'instructions dans le code que nous le souhaitons. Un
1313
Par exemple, ici nous divisons le message en deux :
1414

1515
```js run no-beautify
16-
alert('Hello'); alert('World');
16+
alert("Hello"); alert("World");
1717
```
1818

1919
Chaque instruction est généralement écrite sur une ligne distincte - le code devient donc plus lisible :
2020

2121
```js run no-beautify
22-
alert('Hello');
23-
alert('World');
22+
alert("Hello");
23+
alert("World");
2424
```
2525

2626
## Les points-virgules [#semicolon]
@@ -30,8 +30,8 @@ Un point-virgule peut être omis dans la plupart des cas lorsqu'une rupture de l
3030
Cela fonctionnerait aussi :
3131

3232
```js run no-beautify
33-
alert('Hello')
34-
alert('World')
33+
alert("Hello")
34+
alert("World")
3535
```
3636

3737
Ici, JavaScript interprète le saut de ligne comme un point-virgule "implicite". Cela s'appelle également [une insertion automatique de point-virgule](https://tc39.github.io/ecma262/#sec-automatic-semicolon-insertion).
@@ -46,11 +46,7 @@ alert(3 +
4646
+ 2);
4747
```
4848

49-
<<<<<<< HEAD
50-
Le code génère `6`, car JavaScript n'insère pas de point-virgule ici. Il est intuitivement évident que si la ligne se termine par un plus `"+"`, alors c'est une "expression incomplète", aucun point-virgule requis. Et dans ce cas, cela fonctionne comme prévu.
51-
=======
52-
The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so a semicolon there would be incorrect. And in this case, that works as intended.
53-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
49+
Le code génère `6`, car JavaScript n'insère pas de point-virgule ici. Il est intuitivement évident que si la ligne se termine par un plus `"+"`, alors c'est une "expression incomplète", donc un point-virgule serait incorrect. Et dans ce cas, cela fonctionne comme prévu.
5450

5551
**Mais il existe des situations où JavaScript "échoue" à prendre un point-virgule là où il est vraiment nécessaire.**
5652

@@ -65,66 +61,38 @@ alert("Hello");
6561
[1, 2].forEach(alert);
6662
```
6763
68-
<<<<<<< HEAD
69-
Pas besoin de penser à la signification des crochets `[]` et `forEach` pour le moment. Nous les étudierons plus tard, pour l'instant, cela n'a pas d'importance. Retenons simplement le résultat: il affiche `1`, puis `2`.
70-
71-
Maintenant, ajoutons une `alert` avant le code et **ne le terminons pas** par un point-virgule :
72-
=======
73-
No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of running the code: it shows `Hello`, then `1`, then `2`.
64+
Pas besoin de penser à la signification des crochets `[]` et `forEach` pour le moment. Nous les étudierons plus tard, pour l'instant, retenons simplement le résultat de l’exécution du code : il affiche `Hello`, puis `1`, puis `2`.
7465
75-
Now let's remove the semicolon after the `alert`:
76-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
66+
Supprimons maintenant le point-virgule après l’`alert` :
7767
7868
```js run no-beautify
7969
alert("Hello")
8070
8171
[1, 2].forEach(alert);
8272
```
8373
84-
<<<<<<< HEAD
85-
Maintenant, si nous l'exécutons, seul le premier `alert` est affiché, puis nous avons une erreur!
86-
87-
Mais tout va bien à nouveau si on ajoute un point-virgule après `alert` :
88-
```js run
89-
alert("All fine now");
90-
=======
91-
The difference compared to the code above is only one character: the semicolon at the end of the first line is gone.
92-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
93-
94-
If we run this code, only the first `Hello` shows (and there's an error, you may need to open the console to see it). There are no numbers any more.
95-
96-
<<<<<<< HEAD
97-
Nous avons maintenant le message `"All fine now"`, puis `1` et `2`.
74+
La différence par rapport au code ci-dessus n'est qu'un caractère : le point-virgule à la fin de la première ligne a disparu.
9875
76+
Si nous exécutons ce code, seul le premier `Hello` s'affiche (et il y a une erreur, vous devrez peut-être ouvrir la console pour le voir). Il n'y a plus de chiffres.
9977
100-
L'erreur dans la variante sans point-virgule se produit car JavaScript n'implique pas de point-virgule avant les crochets `[...]`.
78+
C'est parce que JavaScript ne suppose pas de point-virgule avant les crochets `[...]`. Ainsi, le code du dernier exemple est traité comme une seule instruction.
10179
102-
Ainsi, le point-virgule n'étant pas inséré automatiquement, le code du premier exemple est traité comme une seule instruction. C'est comme ça que le moteur le voit :
103-
=======
104-
That's because JavaScript does not assume a semicolon before square brackets `[...]`. So, the code in the last example is treated as a single statement.
105-
106-
Here's how the engine sees it:
107-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
80+
Voici comment le moteur le voit :
10881
10982
```js run no-beautify
11083
alert("Hello")[1, 2].forEach(alert);
11184
```
11285
113-
<<<<<<< HEAD
114-
Mais ce devrait être deux déclarations distinctes, pas une seule. Une telle fusion dans ce cas est tout simplement erronée, d'où l'erreur. Il y a d'autres situations où une telle chose peut se produire.
115-
=======
116-
Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly.
86+
Ça a l'air bizarre, non ? Une telle fusion dans ce cas est tout simplement une erreur. Nous devons mettre un point-virgule après l'`alert` pour que le code fonctionne correctement.
11787
118-
This can happen in other situations also.
119-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
88+
Cela peut arriver dans d'autres situations aussi.
12089
````
12190

122-
Il est recommandé de mettre les points-virgules entre les instructions, même si elles sont séparées par des nouvelles lignes. Cette règle est largement adoptée par la communauté. Notons encore une fois - *il est possible* de laisser de côté les points-virgules la plupart du temps. Mais il est plus sûr -- surtout pour un débutant -- de les utiliser.
91+
Il est recommandé de mettre les points-virgules entre les instructions, même si elles sont séparées par des nouvelles lignes. Cette règle est largement adoptée par la communauté. Notons encore une fois - _il est possible_ de laisser de côté les points-virgules la plupart du temps. Mais il est plus sûr -- surtout pour un débutant -- de les utiliser.
12392

12493
## Les Commentaires [#code-comments]
12594

126-
127-
Au fil du temps, le programme devient de plus en plus complexe. Il devient nécessaire d'ajouter des *commentaires* qui décrivent ce qui se passe et pourquoi.
95+
Au fil du temps, le programme devient de plus en plus complexe. Il devient nécessaire d'ajouter des _commentaires_ qui décrivent ce qui se passe et pourquoi.
12896

12997
Les commentaires peuvent être placés à n'importe quel endroit du script. Ils n'affectent pas l'exécution, car le moteur les ignore simplement.
13098

@@ -133,34 +101,35 @@ Les commentaires peuvent être placés à n'importe quel endroit du script. Ils
133101
Le reste de la ligne est un commentaire. Il peut occuper une ligne complète ou suivre une déclaration.
134102

135103
Comme ici :
104+
136105
```js run
137106
// Ce commentaire occupe une ligne à part
138-
alert('Hello');
107+
alert("Hello");
139108

140-
alert('World'); // Ce commentaire suit l'instruction
109+
alert("World"); // Ce commentaire suit l'instruction
141110
```
142111

143-
**Les commentaires multilignes commencent par une barre oblique et un astérisque <code>/&#42;</code> et se termine par un astérisque et une barre oblique <code>&#42;/</code>.**
112+
**Les commentaires multilignes commencent par une barre oblique et un astérisque <code>/\*</code> et se termine par un astérisque et une barre oblique <code>\*/</code>.**
144113

145114
Comme ceci :
146115

147116
```js run
148117
/* Un exemple avec deux messages.
149118
C'est un commentaire multiligne.
150119
*/
151-
alert('Hello');
152-
alert('World');
120+
alert("Hello");
121+
alert("World");
153122
```
154123

155-
Le contenu des commentaires est ignoré, donc si nous mettons du code à l'intérieur <code>/&#42; ... &#42;/</code> il ne s'exécutera pas.
124+
Le contenu des commentaires est ignoré, donc si nous mettons du code à l'intérieur <code>/\* ... \*/</code> il ne s'exécutera pas.
156125

157126
Parfois, il est utile de désactiver temporairement une partie du code :
158127

159128
```js run
160129
/* Commenter le code
161130
alert('Hello');
162131
*/
163-
alert('World');
132+
alert("World");
164133
```
165134

166135
```smart header="Utiliser les raccourcis !"

0 commit comments

Comments
 (0)