Ce chapitre récapitule brièvement les fonctionnalités de JavaScript que nous avons apprises à ce jour, en accordant une attention particulière aux moments les plus subtils.
Structure du code
Les instructions sont délimitées par un point-virgule :
alert('Hello'); alert('World');
Habituellement, un saut de ligne est également traité comme un séparateur, de sorte que cela fonctionnerait également :
alert('Hello')
alert('World')
Cela sâappelle âinsertion automatique de point-virguleâ. Parfois, cela ne fonctionne pas, par exemple :
alert("Il y aura une erreur après ce message")
[1, 2].forEach(alert)
La plupart des guides de style de code conviennent que nous devrions mettre un point-virgule après chaque déclaration.
Les points-virgules ne sont pas nécessaires après les blocs de code {...} et les constructions de syntaxe les utilisant comme des boucles :
function f() {
// aucun point-virgule nécessaire après la déclaration de la fonction
}
for(;;) {
// pas de point-virgule nécessaire après la boucle
}
⦠Mais même si nous pouvons mettre un point-virgule supplémentaire quelque part, ce nâest pas une erreur. Ce sera ignoré.
Plus dâinformations dans : Structure du code.
Mode strict
Pour activer pleinement toutes les fonctionnalités de JavaScript moderne, nous devrions commencer les scripts avec "use strict".
'use strict';
...
La directive doit être au sommet dâun script ou au début dâun corps de fonction.
Sans "use strict", tout fonctionne toujours, mais certaines fonctionnalités se comportent à lâancienne, de manière âcompatibleâ. Nous préférons généralement le comportement moderne.
Certaines fonctionnalités modernes du langage (telles que les classes que nous étudierons dans le futur) activent implicitement le mode strict.
Plus dâinformations dans : Le mode moderne, "use strict".
Variables
Peut être déclaré en utilisant :
letconst(constant, ne peut pas être changé)var(à lâancienne, nous le verrons plus tard)
Un nom de variable peut inclure :
- Lettres et chiffres, mais le premier caractère ne peut pas être un chiffre.
- Les caractères
$et_sont normaux, à égalité avec les lettres. - Les alphabets et les hiéroglyphes non latins sont également autorisés, mais ils ne sont généralement pas utilisés.
Les variables sont typées dynamiquement. Elles peuvent stocker nâimporte quelle valeur :
let x = 5;
x = "John";
Il y a 8 types de données :
numberpour les nombres à virgule flottante et les nombres entiers,bigintpour des nombres entiers de longueur arbitraire,stringpour les chaînes de caractères,booleanpour les valeurs logiques :true/false,nullâ un type avec une seule valeurnull, signifiant âvideâ ou ânâexiste pasâ,undefinedâ un type avec une seule valeurundefined, signifiant ânon assignéâ,objectetsymbolâ pour les structures de données complexes et les identifiants uniques, nous ne les avons pas encore appris.
Lâopérateur typeof renvoie le type dâune valeur, à deux exceptions près :
typeof null == "object" // erreur dans le langage
typeof function(){} == "function" // les fonctions sont traitées spécialement
Plus dâinformations dans : Les variables et Les types de données.
Interaction
Nous utilisons un navigateur comme environnement de travail. Les fonctions de base de lâinterface utilisateur sont les suivantes :
prompt(question, [default])- Posez une question et retournez soit ce que le visiteur a entré, soit
nullsâil clique sur âcancelâ. confirm(question)- Posez une
questionet suggérez de choisir entre Ok et Annuler. Le choix est retourné commetrue/false. alert(message)- Affiche un
message.
Toutes ces fonctions sont modales, elles suspendent lâexécution du code et empêchent le visiteur dâinteragir avec la page tant quâil nâa pas répondu.
Par exemple :
let userName = prompt("Your name?", "Alice");
let isTeaWanted = confirm("Do you want some tea?");
alert( "Visitor: " + userName ); // Alice
alert( "Tea wanted: " + isTeaWanted ); // true
Plus dâinformations dans : Interaction: alert, prompt, confirm.
Operateurs
JavaScript prend en charge les opérateurs suivants :
- Arithmétique
-
Regulier :
* + - /, aussi%pour le reste et**pour la puissance dâun nombre.Le binaire plus
+concatène des chaînes de caractères. Et si lâun des opérandes est une chaîne de caractères, lâautre est également converti en chaîne de caractères :alert( '1' + 2 ); // '12', string alert( 1 + '2' ); // '12', string - Affectations
-
Il y a une assignation simple :
a = bet des combinés commea *= 2. - Bitwise
-
Les opérateurs au niveau du bit fonctionnent avec des entiers 32 bits au niveau du bit le plus bas : voir la doc quand ils sont nécessaires.
- Conditionnel
-
Le seul opérateur avec trois paramètres :
cond ? resultA : resultB. Sicondest vrai, retourneresultA, autrementresultB. - Opérateurs logiques
-
ET logique
&&et OU||effectuent une évaluation en circuit court puis renvoyent la valeur là où ils se sont arrêtés (pas nécessairementtrue/false). NOT logique!convertit lâopérande en type booléen et retourne la valeur inverse. - Lâopérateur de coalescence des nuls
-
Lâopérateur
??permet de choisir une valeur définie dans une liste de variables. Le résultat dea ?? bestasauf sâil estnull/undefined, alorsb. - Comparaisons
-
Le contrôle dâégalité
==pour les valeurs de types différents les convertit en un nombre (saufnulletundefined, égales entre elles et rien dâautre), elles sont donc égales :alert( 0 == false ); // true alert( 0 == '' ); // trueDâautres comparaisons sont également converties en nombre.
Lâopérateur dâégalité stricte
===ne fait pas la conversion : différents types signifient toujours différentes valeurs pour lui.Les valeurs
nulletundefinedsont spéciales: elles sont égales==les unes aux autres et nâégalent rien dâautre.Les comparaisons supérieures/inférieures comparent des chaînes caractère par caractère, les autres types sont convertis en nombre.
- Autres opérateurs
-
Il y en a quelques autres, comme un opérateur de virgule.
Plus dâinformations dans : Opérateurs de base, mathématiques, Comparaisons, Opérateurs logiques.
Boucles
-
Nous avons couvert 3 types de boucles :
// 1 while (condition) { ... } // 2 do { ... } while (condition); // 3 for(let i = 0; i < 10; i++) { ... } -
La variable déclarée dans la boucle
for(let ...)est visible uniquement à lâintérieur de la boucle. Mais nous pouvons aussi omettreletet réutiliser une variable existante. -
Les directives
break/continuepermettent de sortir complètement de la boucle / de lâitération en cours. Utilisez des labels pour rompre les boucles imbriquées.
Details dans : Boucles : while et for.
Plus tard, nous étudierons plus de types de boucles pour traiter des objets.
La construction âswitchâ
La construction âswitchâ peut remplacer plusieurs vérifications if. Il utilise === (égalité stricte) pour les comparaisons.
Par exemple :
let age = prompt('Your age?', 18);
switch (age) {
case 18:
alert("Won't work"); // le résultat de prompt est une chaîne de caractères, pas un nombre
case "18":
alert("This works!");
break;
default:
alert("Any value not equal to one above");
}
Details dans : La déclaration "switch".
Fonctions
Nous avons couvert trois manières de créer une fonction en JavaScript :
-
Déclaration de fonction: la fonction dans le flux de code principal
function sum(a, b) { let result = a + b; return result; } -
Expression de fonction : fonction dans le contexte dâune expression
let sum = function(a, b) { let result = a + b; return result; }; -
Fonctions fléchées :
// expression à droite let sum = (a, b) => a + b; // ou une syntaxe multiligne avec {...}, il faut return ici : let sum = (a, b) => { // ... return a + b; } // sans arguments let sayHi = () => alert("Hello"); // avec un seul argument let double = n => n * 2;
- Les fonctions peuvent avoir des variables locales: celles déclarées dans son corps ou sa liste de paramètres. Ces variables ne sont visibles quâà lâintérieur de la fonction.
- Les paramètres peuvent avoir des valeurs par défaut :
function sum(a = 1, b = 2) {...}. - Les fonctions retournent toujours quelque chose. Si aucune instruction
returnnâest renvoyée, le résultat estundefined.
Details : voir Fonctions, Fonctions fléchées, les bases.
Plus à venir
Câétait une brève liste de fonctionnalités de JavaScript. Pour lâinstant, nous nâavons étudié que les bases. Plus loin dans le tutoriel, vous trouverez plus de fonctionnalités spéciales et avancées de JavaScript.
Commentaires
<code>, pour plusieurs lignes â enveloppez-les avec la balise<pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepenâ¦)