Cours JavaScript et TypeScript · Module 1: Bases de JavaScript
Les points-virgules et leur caractère facultatif
Dans cette leçon9
À Jurassic Park, il existe des protocoles de sécurité qui doivent être strictement respectés, mais il y en a aussi qui peuvent parfois être interprétés avec souplesse selon la situation. Une situation similaire existe en JavaScript avec les points-virgules - parfois ils sont absolument nécessaires, et d'autres fois complètement facultatifs.
Le rôle des points-virgules en JavaScript
Les points-virgules (;) servent à séparer les instructions en JavaScript. Ils sont comme les portails de sécurité entre les différentes procédures de Jurassic Park - ils marquent clairement l'endroit où une opération se termine et où la suivante commence.
1let velociraptorCount = 3; // Première instruction
2velociraptorCount = velociraptorCount + 2; // Deuxième instruction
3console.log("Nombre de velociraptors : " + velociraptorCount); // Troisième instructionQuand les points-virgules sont-ils facultatifs ?
JavaScript possède un mécanisme appelé « Automatic Semicolon Insertion » (ASI, insertion automatique de points-virgules). Ce mécanisme permet d'omettre les points-virgules dans de nombreux cas, car JavaScript devine intelligemment où ils devraient se trouver.
C'est comme une situation à Jurassic Park où des dresseurs de dinosaures expérimentés peuvent parfois sauter certaines étapes de la procédure parce qu'ils savent comment se comporter en toute sécurité.
1// Code sans points-virgules - l'ASI les insérera automatiquement
2let trexWeight = 8000
3console.log("Poids du T-Rex : " + trexWeight)Dans l'exemple ci-dessus, JavaScript interprète le code comme s'il ressemblait à ceci :
1let trexWeight = 8000;
2console.log("Poids du T-Rex : " + trexWeight);Comment fonctionne l'ASI ?
L'ASI (Automatic Semicolon Insertion) fonctionne selon plusieurs règles qu'il vaut la peine de comprendre.
1. L'ASI fonctionne en fin de ligne
JavaScript insère automatiquement un point-virgule lorsqu'il rencontre un caractère de nouvelle ligne, s'il estime que l'instruction devrait se terminer à cet endroit :
1let dinoName = "Velociraptor" // L'ASI insérera un point-virgule ici
2let dinoHeight = 0.5 // L'ASI insérera un point-virgule ici2. L'ASI termine l'instruction après return quand une nouvelle ligne suit
Après les mots return, break, continue et throw, JavaScript ne cherche pas la suite de l'instruction sur la ligne suivante, il insère tout de suite un point-virgule :
1function checkDinosaur() {
2 return // L'ASI insérera un point-virgule ici
3 {
4 species: "T-Rex"
5 }
6}Attention ! Dans l'exemple ci-dessus, l'ASI fera en sorte que la fonction renvoie undefined, et non l'objet, comme on pourrait s'y attendre. Pour éviter de tels résultats inattendus, tu dois écrire :
1function checkDinosaur() {
2 return {
3 species: "T-Rex",
4 dangerous: true
5 };
6}3. L'ASI ne s'active pas si la ligne se termine par un opérateur
Si une ligne se termine par un opérateur (p. ex. +, -, *), JavaScript suppose que l'instruction continue à la ligne suivante :
1let longMessage = "Les dinosaures de Jurassic Park " +
2 "sont surveillés en permanence" // L'ASI n'insérera pas de point-virgule après la première ligneDangers liés à l'ASI
Tout comme le non-respect des procédures à Jurassic Park peut conduire à de fâcheux accidents, le fait de se reposer uniquement sur l'ASI peut provoquer des erreurs inattendues. Voici plusieurs situations où l'ASI peut se comporter autrement que prévu :
1. Commencer une ligne par des parenthèses
1let a = 5
2(function() {
3 console.log("Cette fonction sera appelée immédiatement !")
4})()JavaScript interprétera cela comme :
1let a = 5(function() {
2 console.log("Cette fonction sera appelée immédiatement !")
3})();Ce qui provoquera une erreur, car 5 n'est pas une fonction. La notation correcte est :
1let a = 5;
2(function() {
3 console.log("Cette fonction sera appelée immédiatement !")
4})();2. Commencer une ligne par les opérateurs [ ou +
1let dinosaurs = ['T-Rex', 'Velociraptor']
2['Triceratops', 'Brachiosaurus'].forEach(function(dino) {
3 console.log(dino)
4})JavaScript pourrait interpréter cela comme une tentative d'accès au tableau dinosaurs à l'aide de l'indice ['Triceratops', 'Brachiosaurus'], ce qui provoquera une erreur. La notation correcte :
1let dinosaurs = ['T-Rex', 'Velociraptor'];
2['Triceratops', 'Brachiosaurus'].forEach(function(dino) {
3 console.log(dino)
4});Bonnes pratiques
Dans le monde de JavaScript, il existe deux écoles de pensée concernant les points-virgules, tout comme à Jurassic Park il existe différentes approches de la gestion des dinosaures :
L'approche « toujours utiliser les points-virgules »
C'est comme suivre toutes les procédures de sécurité du parc, même si certaines semblent superflues :
- Place toujours les points-virgules à la fin des instructions
- Évite les pièges potentiels de l'ASI
- Le code est plus lisible et prévisible
- Plus facile de collaborer avec d'autres développeurs
1// Code avec points-virgules
2let parkStatus = "Open";
3let visitorCount = 1500;
4
5function updateStatus(newStatus) {
6 parkStatus = newStatus;
7 return parkStatus;
8}
9
10updateStatus("Closed for safety reasons");
11console.log("Statut actuel : " + parkStatus);L'approche « se reposer sur l'ASI »
C'est comme accorder aux dresseurs expérimentés une certaine liberté dans le travail avec les dinosaures :
- Se reposer sur l'insertion automatique de points-virgules
- Éviter le « bruit visuel » dans le code
- Suivre les directives de style (p. ex. Standard JS)
- Se méfier des pièges potentiels
1// Code sans points-virgules
2let parkStatus = "Open"
3let visitorCount = 1500
4
5function updateStatus(newStatus) {
6 parkStatus = newStatus
7 return parkStatus
8}
9
10updateStatus("Closed for safety reasons")
11console.log("Statut actuel : " + parkStatus)Règles pour omettre les points-virgules en toute sécurité
Si tu décides d'omettre les points-virgules, voici quelques règles de sécurité (comme des protocoles de sécurité à Jurassic Park) :
- Ne commence jamais une ligne par
(,[ou/(ce sont des caractères dangereux pour l'ASI) :
1// MAUVAIS - piège potentiel :
2let greeting = "Welcome to Jurassic Park"
3(function() {
4 console.log(greeting)
5})()
6
7// BON - ajoute un point-virgule avant l'IIFE :
8let greeting = "Welcome to Jurassic Park";
9(function() {
10 console.log(greeting)
11})()
12
13// OU - utilise un point-virgule défensif :
14let greeting = "Welcome to Jurassic Park"
15;(function() {
16 console.log(greeting)
17})()- Sois prudent avec les instructions
return,break,continue,throwen fin de ligne :
1// MAUVAIS - l'ASI insérera un point-virgule après return :
2function getDinosaurData() {
3 return
4 {
5 name: "T-Rex"
6 }
7}
8
9// BON - accolade sur la même ligne que return :
10function getDinosaurData() {
11 return {
12 name: "T-Rex",
13 weight: 8000
14 }
15}- Sois cohérent dans ton approche :
Comme dans la gestion du parc - soit toutes les procédures sont respectées, soit aucune. Mélanger les styles mène au chaos et aux erreurs.
Outils utiles pour gérer les points-virgules
Tout comme Jurassic Park utilise des outils avancés pour surveiller les dinosaures, en JavaScript nous disposons d'outils pour aider à gérer le code :
- ESLint - permet d'imposer une utilisation ou une non-utilisation cohérente des points-virgules
1// Dans le fichier .eslintrc.json :
2{
3 "rules": {
4 "semi": ["error", "always"] // ou "never" pour le style sans point-virgule
5 }
6}- Prettier - formate automatiquement le code, en ajoutant ou en supprimant les points-virgules selon la configuration
1// Dans le fichier .prettierrc :
2{
3 "semi": true // ou false pour le style sans point-virgule
4}Que choisir ?
Le choix entre utiliser et omettre les points-virgules en JavaScript est comme la décision concernant le style de gestion à Jurassic Park - un respect plus formel des procédures ou une approche flexible basée sur l'expérience.
- Utiliser les points-virgules est plus sûr, surtout pour les débutants et les grandes équipes
- Omettre les points-virgules peut fonctionner dans de petites équipes avec des standards clairement définis
Dans du code JavaScript professionnel, le plus important est la cohérence - soit tu utilises les points-virgules partout, soit nulle part. Mélanger les styles mène au chaos et aux erreurs, tout comme un respect incohérent des protocoles de sécurité dans un parc rempli de dinosaures mènerait à la catastrophe.
Finalement, comme l'a dit le Dr Ian Malcolm dans Jurassic Park : « Vos programmeurs étaient tellement préoccupés de savoir s'ils pouvaient sauter les points-virgules qu'ils ne se sont pas demandé s'ils le devaient. »
Résumé
- Les points-virgules en JavaScript servent à séparer les instructions
- L'ASI (Automatic Semicolon Insertion) permet d'omettre les points-virgules dans de nombreuses situations
- Il existe des pièges de l'ASI, surtout lorsqu'on commence des lignes par certains caractères
- Choisis un style et applique-le de manière cohérente dans tout le code
- Des outils comme ESLint et Prettier aident à maintenir un style cohérent
Dans la prochaine leçon, nous examinerons les déclarations de variables en JavaScript, où nous découvrirons var, let et const - différentes façons d'étiqueter et de sécuriser nos données, semblables aux différents niveaux de sécurité pour différentes espèces de dinosaures à Jurassic Park.
Code de cette leçon : index.js
1// Système de sécurité - Instructions conditionnelles
2// Exercice : Utiliser if, else if, else
3
4// Condition simple
5const securityLevel = 3;
6
7if (securityLevel >= 5) {
8 console.log("ALARME ! Niveau critique !");
9} else if (securityLevel >= 3) {
10 console.log("ATTENTION ! Menace accrue.");
11} else {
12 console.log("Niveau normal.");
13}
14
15// Opérateur de comparaison
16const fenceVoltage = 10000;
17const requiredVoltage = 8000;
18
19if (fenceVoltage >= requiredVoltage) {
20 console.log("Clôture : ACTIVE");
21} else {
22 console.log("Clôture : PANNE !");
23}
24
25// Ta mission :
26// 1. Écris une condition vérifiant la température de l'incubateur
27// 2. Utilise else if pour différentes plages
28// 3. Affiche le message approprié
29
30// Ton code ici :
31Tu as repéré une erreur dans cette leçon ?
Teste tes connaissances
Réponds aux questions de cette leçon. Choisis une réponse pour voir tout de suite si elle est correcte.
1. Quel caractère termine une instruction en JavaScript ?
2. Le point-virgule à la fin d'une instruction est-il obligatoire en JavaScript ?
3. Que signifie l'abréviation ASI dans le contexte de JavaScript ?
4. Que renvoie une fonction lorsque return se trouve sur une ligne séparée de l'objet renvoyé ? function f() { return { name: 'Rex' } }
Tâches pratiques dans le jeu
- Éditeur de code
Écris un programme de surveillance qui affiche trois messages dans la console, par exemple 'Clôtures : OK', 'Caméras : OK' et 'Alimentation : 98 %'. Mets chaque console.log() sur sa propre ligne et termine-le par un point-virgule. En haut, ajoute un commentaire multi-lignes qui décrit le programme, et au-dessus de chaque console.log() un commentaire sur une ligne qui l'explique.