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
*JavaScript* a été initiallement créé pour "rendre les pages web vivantes".
9
+
_JavaScript_ a été initiallement créé pour "rendre les pages web vivantes".
11
10
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.
13
12
14
13
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.
15
14
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)>).
17
16
18
17
```smart header="Pourquoi est-il appelé <u>Java</u>Script ?"
19
18
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
27
26
28
27
Différents moteurs ont différents "nom de code", par exemple:
29
28
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.
32
30
-[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.
39
32
40
33
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.
41
34
@@ -47,7 +40,7 @@ Les moteurs sont compliqués. Mais le fonctionnement de base est facile à compr
47
40
2. Ensuite, il convertit ("compile") le script en langage machine.
48
41
3. Enfin le code machine s'exécute, très rapidement.
49
42
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.
51
44
```
52
45
53
46
## Que peut faire JavaScript dans le navigateur ?
@@ -58,31 +51,31 @@ Les fonctionnalités dépendent grandement de l'environnement qui exécute JavaS
58
51
59
52
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.
60
53
61
-
Par exemple, JavaScript dans le navigateur est capable de :
54
+
Par exemple, JavaScript dans le navigateur est capable de :
62
55
63
56
- Ajoutez un nouveau code HTML à la page, modifiez le contenu existant, modifiez les styles.
64
57
- 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)>)).
66
59
- Obtenir et définir des cookies, poser des questions au visiteur, afficher des messages.
67
60
- Se souvenir des données du côté client ("stockage local").
68
61
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 ?
70
63
71
64
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.
72
65
73
66
Les exemples de telles restrictions sont:
74
67
75
68
- 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.
76
69
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>`.
78
71
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).
80
73
81
74
- 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).
82
75
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.
84
77
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.
86
79
87
80
- 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é.
88
81
@@ -112,7 +105,7 @@ La syntaxe de JavaScript ne convient pas aux besoins de tous. Différentes perso
112
105
113
106
Il faut s’y attendre, parce que les projets et les exigences sont différents pour tous.
114
107
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.
116
109
117
110
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".
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/02-structure/article.md
+25-56Lines changed: 25 additions & 56 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,4 @@
1
-
# Structure du code
1
+
# Structure du code
2
2
3
3
La première chose à apprendre est de construire des blocs de code.
4
4
@@ -13,14 +13,14 @@ Nous pouvons avoir autant d'instructions dans le code que nous le souhaitons. Un
13
13
Par exemple, ici nous divisons le message en deux :
14
14
15
15
```js run no-beautify
16
-
alert('Hello'); alert('World');
16
+
alert("Hello"); alert("World");
17
17
```
18
18
19
19
Chaque instruction est généralement écrite sur une ligne distincte - le code devient donc plus lisible :
20
20
21
21
```js run no-beautify
22
-
alert('Hello');
23
-
alert('World');
22
+
alert("Hello");
23
+
alert("World");
24
24
```
25
25
26
26
## Les points-virgules [#semicolon]
@@ -30,8 +30,8 @@ Un point-virgule peut être omis dans la plupart des cas lorsqu'une rupture de l
30
30
Cela fonctionnerait aussi :
31
31
32
32
```js run no-beautify
33
-
alert('Hello')
34
-
alert('World')
33
+
alert("Hello")
34
+
alert("World")
35
35
```
36
36
37
37
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 +
46
46
+2);
47
47
```
48
48
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.
54
50
55
51
**Mais il existe des situations où JavaScript "échoue" à prendre un point-virgule là où il est vraiment nécessaire.**
56
52
@@ -65,66 +61,38 @@ alert("Hello");
65
61
[1, 2].forEach(alert);
66
62
```
67
63
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`.
74
65
75
-
Now let's remove the semicolon after the `alert`:
76
-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
66
+
Supprimons maintenant le point-virgule après l’`alert` :
77
67
78
68
```js run no-beautify
79
69
alert("Hello")
80
70
81
71
[1, 2].forEach(alert);
82
72
```
83
73
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.
98
75
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.
99
77
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.
101
79
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 :
108
81
109
82
```js run no-beautify
110
83
alert("Hello")[1, 2].forEach(alert);
111
84
```
112
85
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.
117
87
118
-
This can happen in other situations also.
119
-
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
88
+
Cela peut arriver dans d'autres situations aussi.
120
89
````
121
90
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.
123
92
124
93
## Les Commentaires [#code-comments]
125
94
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.
128
96
129
97
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.
130
98
@@ -133,34 +101,35 @@ Les commentaires peuvent être placés à n'importe quel endroit du script. Ils
133
101
Le reste de la ligne est un commentaire. Il peut occuper une ligne complète ou suivre une déclaration.
134
102
135
103
Comme ici :
104
+
136
105
```js run
137
106
// Ce commentaire occupe une ligne à part
138
-
alert('Hello');
107
+
alert("Hello");
139
108
140
-
alert('World'); // Ce commentaire suit l'instruction
109
+
alert("World"); // Ce commentaire suit l'instruction
141
110
```
142
111
143
-
**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>.**
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>.**
144
113
145
114
Comme ceci :
146
115
147
116
```js run
148
117
/* Un exemple avec deux messages.
149
118
C'est un commentaire multiligne.
150
119
*/
151
-
alert('Hello');
152
-
alert('World');
120
+
alert("Hello");
121
+
alert("World");
153
122
```
154
123
155
-
Le contenu des commentaires est ignoré, donc si nous mettons du code à l'intérieur <code>/* ... */</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.
156
125
157
126
Parfois, il est utile de désactiver temporairement une partie du code :
0 commit comments