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âŠ)