🌐 AIæœçŽą & 代理 䞻饔
19 octobre 2023

Les variables

La plupart du temps, une application JavaScript doit utiliser des informations. Voici 2 exemples :

  1. Une boutique en ligne – les informations peuvent inclure des articles vendus et un panier d’achat.
  2. Une application de chat – les informations peuvent inclure des utilisateurs, des messages et bien plus encore.

Les variables sont utilisées pour stocker ces informations.

Une variable

Une variable est un “stockage nommĂ©â€ pour les donnĂ©es. Nous pouvons utiliser des variables pour stocker des goodies, des visiteurs et d’autres donnĂ©es.

Pour créer une variable en JavaScript, nous devons utiliser le mot-clé let.

L’instruction ci-dessous crĂ©e (autrement dit: dĂ©clare) une variable avec le nom “message” :

let message;

Maintenant, nous pouvons y mettre des donnĂ©es en utilisant l’opĂ©rateur d’affectation = :

let message;

message = 'Hello'; // stocke la chaßne de caractÚres 'Hello' dans la variable nommée message

La chaßne de caractÚres est maintenant enregistrée dans la zone de mémoire associée à la variable. Nous pouvons y accéder en utilisant le nom de la variable :

let message;
message = 'Hello!';

alert(message); // affiche le contenu de la variable

Pour ĂȘtre concis, nous pouvons fusionner la dĂ©claration et l’affectation de variables en une seule ligne :

let message = 'Hello!'; // définir la variable et assigner la valeur

alert(message); // Hello!

Nous pouvons également déclarer plusieurs variables sur une seule ligne :

let user = 'John', age = 25, message = 'Hello';

Cela peut sembler plus court, mais ce n’est pas recommandĂ©. Pour une meilleure lisibilitĂ©, veuillez utiliser une seule ligne par variable.

La variante multiligne est un peu plus longue, mais plus facile Ă  lire :

let user = 'John';
let age = 25;
let message = 'Hello';

Certaines personnes définissent également plusieurs variables dans ce style multiligne :

let user = 'John',
  age = 25,
  message = 'Hello';


 Ou mĂȘme dans le style “virgule premiĂšre” :

let user = 'John'
  , age = 25
  , message = 'Hello';

Techniquement, toutes ces variantes font la mĂȘme chose. C’est donc une question de goĂ»t personnel et d’esthĂ©tique.

var au lieu de let

Dans les anciens scripts, vous pouvez également trouver un autre mot-clé : var au lieu de let :

var message = 'Hello';

Le mot-clĂ© var est presque identique Ă  let. Il dĂ©clare Ă©galement une variable, mais d’une maniĂšre lĂ©gĂšrement diffĂ©rente, Ă  la mode “old school”.

Il y a des diffĂ©rences subtiles entre let et var, mais elles n’ont pas encore d’importance pour nous. Nous les couvrirons en dĂ©tails plus tard, dans le chapitre L'ancien "var".

Une analogie avec la vie réelle

Nous pouvons facilement saisir le concept d’une “variable” si nous l’imaginons comme une “boĂźte” pour les donnĂ©es, avec un autocollant portant un nom unique.

Par exemple, la variable message peut ĂȘtre imaginĂ©e comme une boĂźte Ă©tiquetĂ©e “message” avec la valeur “Hello!” Ă  l’intĂ©rieur :

Nous pouvons mettre n’importe quelle valeur dans la boüte.

On peut aussi le changer autant de fois qu’on veut :

let message;

message = 'Hello!';

message = 'World!'; // valeur changée

alert(message);

Lorsque la valeur est modifiée, les anciennes données sont supprimées de la variable :

Nous pouvons Ă©galement dĂ©clarer deux variables et copier des donnĂ©es de l’une Ă  l’autre.

let hello = 'Hello world!';

let message;

// copier 'Hello world' de hello vers message
message = hello;

// maintenant les deux variables contiennent les mĂȘmes donnĂ©es
alert(hello); // Hello world!
alert(message); // Hello world!
Déclarer deux fois déclenche une erreur

Une variable ne doit ĂȘtre dĂ©clarĂ©e qu’une seule fois.

Une dĂ©claration rĂ©pĂ©tĂ©e de la mĂȘme variable est une erreur :

let message = "This";

// répéter 'let' conduit à une erreur
let message = "That"; // SyntaxError: 'message' has already been declared

Donc, nous devrions déclarer une variable une fois et y faire référence sans let.

Langages fonctionnels

Il peut ĂȘtre intĂ©ressant de savoir qu’il existe aussi des langages de programmation purement fonctionelle, comme Haskell qui interdisent de modifier une valeur de variable.

Dans ce genre de langage, une fois la valeur stockĂ©e dans la boĂźte, elle est lĂ  pour toujours. Si nous devons stocker autre chose, le langage nous oblige Ă  crĂ©er une nouvelle boĂźte (dĂ©clarer une nouvelle variable). Nous ne pouvons pas rĂ©utiliser l’ancienne.

Bien que cela puisse paraĂźtre un peu Ă©trange Ă  premiĂšre vue, ces langages sont tout Ă  fait capables de dĂ©veloppements sĂ©rieux. Plus que cela, il existe des domaines tels que les calculs parallĂšles oĂč cette limitation confĂšre certains avantages.

Nom de variable

Il existe deux limitations pour un nom de variable en JavaScript :

  1. Le nom ne doit contenir que des lettres, des chiffres, des symboles $ et _.
  2. Le premier caractĂšre ne doit pas ĂȘtre un chiffre.

Noms valides, par exemple :

let userName;
let test123;

Lorsque le nom contient plusieurs mots, le camelCase est couramment utilisĂ©. C’est-Ă -dire que les mots se succĂšdent, chaque mot Ă  l’exception du premier commence par une majuscule : monTresLongNom.

Ce qui est intĂ©ressant – le signe dollar '$' et l’underscore '_' peuvent Ă©galement ĂȘtre utilisĂ© dans les noms. Ce sont des symboles rĂ©guliers, tout comme les lettres, sans aucune signification particuliĂšre.

Ces noms sont valides :

let $ = 1; // déclarer une variable avec le nom "$"
let _ = 2; // et maintenant une variable avec le nom "_"

alert($ + _); // 3

Exemples de noms de variables incorrects :

let 1a; // ne peut pas commencer avec un chiffre

let mon-nom; // un trait d'union '-' n'est pas autorisé dans le nom
La casse est importante

Des variables nommées apple et APPLE sont deux variables différentes.

Les lettres non latines sont autorisées mais non recommandées

Il est possible d’utiliser n’importe quelle langue, y compris les lettres cyrilliques, les logogrammes chinois, etc., comme ceci :

let ĐžĐŒŃ = '...';
let 我 = '...';

Techniquement, il n’y a pas d’erreur ici, ces noms sont autorisĂ©s, mais il existe une convention internationale d’utiliser l’anglais dans les noms de variables. MĂȘme si nous Ă©crivons un petit script, sa vie peut ĂȘtre longue. Les personnes d’autres pays peuvent avoir besoin de les lire quelque temps.

Noms réservés

Il existe une liste de mots rĂ©servĂ©s, qui ne peuvent pas ĂȘtre utilisĂ©s comme noms de variables, car ils sont utilisĂ©s par le langage lui-mĂȘme.

Par exemple, les mots let, class, return, function sont réservés.

Le code ci-dessous donne une erreur de syntaxe :

let let = 5; // impossible de nommer une variable "let", erreur!
let return = 5; // on ne peut pas la nommer "return" aussi, erreur!
Une affectation sans : use strict

Normalement, nous devons dĂ©finir une variable avant de l’utiliser. Mais jadis, il Ă©tait techniquement possible de crĂ©er une variable par simple affectation de la valeur, sans let. Cela fonctionne toujours maintenant si nous ne mettons pas use strict. Le comportement est conservĂ© pour la compatibilitĂ© avec les anciens scripts.

// note : pas de "use strict" dans cet exemple

num = 5; // la variable "num" est créée si elle n'existe pas

alert(num); // 5

C’est une mauvaise pratique, cela donne une erreur en mode strict :

"use strict";

num = 5; // erreur: num n'est pas défini

Les Constantes

Pour déclarer une constante (non changeante), on peut utiliser const plutÎt que let :

const myBirthday = '18.04.1982';

Les variables dĂ©clarĂ©es Ă  l’aide de const sont appelĂ©es “constantes”. Elles ne peuvent pas ĂȘtre rĂ©assignĂ©es. Une tentative de le faire provoquerait une erreur :

const myBirthday = '18.04.1982';

myBirthday = '01.01.2001'; // erreur, ne peut pas réaffecter la constante !

Lorsqu’un programmeur est certain que la variable ne doit jamais changer, il peut utiliser const pour le garantir et Ă©galement le montrer clairement Ă  tout le monde.

Les constantes en majuscules

Il existe une pratique rĂ©pandue d’utiliser des constantes comme alias pour des valeurs difficiles Ă  mĂ©moriser, qui sont connues avant leur exĂ©cution.

Ces constantes sont nommées en utilisant des majuscules et des underscores.

Par exemple, crĂ©ons des constantes pour les couleurs au format dit “web” (hexadĂ©cimal) :

const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";

// ... quand il faut choisir une couleur
let color = COLOR_ORANGE;
alert(color); // #FF7F00

Bénéfices:

  • COLOR_ORANGE est beaucoup plus facile Ă  retenir que "#FF7F00".
  • Il est beaucoup plus facile de mal saisir "#FF7F00" que COLOR_ORANGE.
  • En lisant le code, COLOR_ORANGE est beaucoup plus significatif que #FF7F00.

Quand devrions-nous utiliser les majuscules pour une constante et quand devrions-nous les nommer normalement ? Soyons clairs.

Être une “constante” signifie simplement que la valeur ne change jamais. Mais il existe des constantes connues avant l’exĂ©cution (comme une valeur hexadĂ©cimale pour le rouge), et il y a celles qui sont calculĂ©es en temps rĂ©el, pendant l’exĂ©cution, mais ne changent pas aprĂšs l’affectation.

Par exemple :

const pageLoadTime = /* temps pris par une page Web pour charger */;

La valeur de pageLoadTime n’est pas connue avant le chargement de la page, elle est donc nommĂ©e normalement. Mais cela reste une constante, car elle ne change pas aprĂšs l’affectation.

En d’autres termes, les constantes nommĂ©es en majuscules ne sont utilisĂ©es que comme alias pour les valeurs “codĂ©es en dur”.

Nommez les choses correctement

En parlant de variables, il y a une autre chose extrĂȘmement importante.

Un nom de variable doit avoir une signification claire et Ă©vidente, dĂ©crivant les donnĂ©es qu’elle stocke.

Le nommage de variables est l’une des compĂ©tences les plus importantes et les plus complexes de la programmation. Un rapide coup d’Ɠil sur les noms de variables peut rĂ©vĂ©ler quel code est Ă©crit par un dĂ©butant et par un dĂ©veloppeur expĂ©rimentĂ©.

Dans un projet rĂ©el, la majeure partie du temps est consacrĂ©e Ă  la modification et Ă  l’extension de la base de code existant, plutĂŽt que d’écrire quelque chose de complĂštement sĂ©parĂ© de zĂ©ro. Et lorsque nous revenons au code aprĂšs un certain temps, il est beaucoup plus facile de trouver des informations bien Ă©tiquetĂ©es. Ou, en d’autres termes, lorsque les variables ont de bons noms.

Veuillez prendre le temps de réfléchir à un nom pertinent pour une variable avant de la déclarer. Cela vous facilitera énormément la vie.

Voici quelques rĂšgles Ă  suivre :

  • Utilisez des noms lisibles par des humains comme userName ou shoppingCart.
  • Restez Ă  l’écart des abrĂ©viations ou des noms courts tels que a, b, c, Ă  moins que vous ne sachiez vraiment ce que vous faites.
  • Faire en sorte que le nom soit le plus descriptif et concis possible. Des exemples de noms incorrects sont data et value. Un tel nom ne dit rien. C’est tout Ă  fait acceptable de les utiliser si le contexte dans lequel les donnĂ©es ou les valeurs sont impliquĂ©es est particuliĂšrement Ă©vident.
  • S’accorder avec son Ă©quipe (et soi-mĂȘme) sur les termes utilisĂ©s. Si un visiteur du site est appelĂ© un “utilisateur”, nous devrions nommer les variables connexes comme currentUser ou newUser, mais non currentVisitor ou encore newManInTown.

Cela semble simple ? En effet, ça l’est, mais la crĂ©ation de noms descriptifs et concis dans la pratique ne l’est pas. Fonce.

Réutiliser ou créer ?

Une derniÚre note. Certains programmeurs paresseux, au lieu de déclarer une nouvelle variable, ont tendance à réutiliser ceux qui existent déjà.

En consĂ©quence, la variable est comme une boĂźte oĂč les gens jettent des choses diffĂ©rentes sans changer l’autocollant. Qu’est-ce qu’il y a dedans maintenant ? Qui sait 
 Nous devons creuser et vĂ©rifier.

Un tel programmeur économise un peu sur la déclaration de variable, mais perd dix fois plus sur le débogage du code.

Une variable supplémentaire est une bonne chose, cela ne complique pas le code, bien au contraire.

Les minificateurs et navigateurs modernes optimisent suffisamment le code pour ne pas crĂ©er de problĂšmes de performances. L’utilisation de diffĂ©rentes variables pour diffĂ©rentes valeurs peut mĂȘme aider le moteur Ă  optimiser.

Résumé

Nous pouvons dĂ©clarer des variables pour stocker des donnĂ©es. Cela peut ĂȘtre fait en utilisant var ou let ou const.

  • let – est une dĂ©claration de variable moderne.
  • var – est une dĂ©claration de variable old-school. Normalement, nous ne l’utilisons pas du tout, mais nous couvrirons les diffĂ©rences subtiles par rapport Ă  let dans le chapitre L'ancien "var", juste au cas oĂč vous en auriez besoin.
  • const – est Ă©quivalent Ă  let, mais la valeur de la variable ne peut pas ĂȘtre modifiĂ©e.

Les variables doivent ĂȘtre nommĂ©es d’une maniĂšre qui nous permet de comprendre facilement ce qui est Ă  l’intĂ©rieur.

Exercices

importance: 2
  1. Déclarez deux variables : admin and name.
  2. Assignez la valeur "John" Ă  name.
  3. Copiez la valeur de name Ă  admin.
  4. Afficher la valeur de admin en utilisant alert (devrait afficher “John”).

Dans le code ci-dessous, chaque ligne correspond Ă  l’élĂ©ment de la liste des tĂąches.

let admin, name; // on peut déclarer deux variables à la fois

name = "John";

admin = name;

alert( admin ); // "John"
importance: 3
  1. Créez la variable avec le nom de notre planÚte. Comment nommeriez-vous une telle variable ?
  2. Créez la variable pour stocker le nom du visiteur actuel. Comment nommeriez-vous cette variable ?

La variable pour notre planĂšte

C’est simple :

let notrePlanete = "Terre";

Notez que nous pourrions utiliser un nom planĂšte plus court, mais la planĂšte Ă  laquelle il fait rĂ©fĂ©rence pourrait ne pas ĂȘtre Ă©vidente. C’est bien d’ĂȘtre plus verbeux. Au moins jusqu’à ce que la variable n’estPasTropLongue.

le nom du visiteur actuel

let currentUserName = "John";

Encore une fois, nous pourrions rĂ©duire cela Ă  userName si nous savons avec certitude que c’est bien l’utilisateur actuel.

Les Ă©diteurs modernes et la saisie semi-automatique facilitent l’écriture de noms de variables longs. Ne vous en privez pas. Un nom avec 3 mots est bien.

Et si votre Ă©diteur ne dispose pas de l’autocomplĂ©tion correcte, obtenez-en un.

importance: 4

Examinez le code suivant :

const birthday = '18.04.1982';

const age = someCode(birthday);

Ici, nous avons une constante birthday pour la date de naissance, ainsi que la constante age.

L’age est calculĂ© Ă  partir de birthday en utilisant someCode(), ce qui signifie un appel de fonction que nous n’avons pas encore expliquĂ© (nous le ferons bientĂŽt !), mais les dĂ©tails n’ont pas d’importance ici, le fait est que l’age est calculĂ© d’une maniĂšre ou d’une autre en fonction de la date de naissance birthday.

Serait-il juste d’utiliser des majuscules pour birthday? Pour age? Ou mĂȘme pour les deux ?

const BIRTHDAY = '18.04.1982'; // mettre l'anniversaire en majuscule ?

const AGE = someCode(BIRTHDAY); // mettre l'ùge en majuscule ?

Nous utilisons gĂ©nĂ©ralement des majuscules pour les constantes “codĂ©es en dur”. Ou, en d’autres termes, lorsque la valeur est connue avant exĂ©cution et directement Ă©crite dans le code.

Dans ce code, birthday correspond exactement Ă  cela. Nous pourrions donc utiliser les majuscules pour cela.

En revanche, age est Ă©valuĂ© en exĂ©cution. Aujourd’hui, nous avons un Ăąge, un an aprĂšs, nous en aurons un autre. C’est constant dans le sens oĂč cela ne change pas avec l’exĂ©cution du code. Mais c’est un peu “moins constant” que birthday : il est calculĂ©, nous devrions donc garder les minuscules pour cela.

Carte du tutoriel

Commentaires

lire ceci avant de commenter

  • Si vous avez des amĂ©liorations Ă  suggĂ©rer, merci de soumettre une issue GitHub ou une pull request au lieu de commenter.
  • Si vous ne comprenez pas quelque chose dans l'article, merci de prĂ©ciser.
  • Pour insĂ©rer quelques bouts de code, utilisez la balise <code>, pour plusieurs lignes – enveloppez-les avec la balise <pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepen
)