Javascript - Les variables

Qu’est-ce qu’une variable ? Pour les débutants en programmation nous allons découvrir ce sujet avec le langage javascript.

Historique

Tout d’abord, un peu d’histoire : le Javascript a été créé en 1995 en seulement 10 jours par Brendan Eich.

À la base, son nom d’origine est Mocha. Ce qui a évolué en Livescript puis en Javascript tel que nous le connaissons. Il est disponible premièrement sur le navigateur NetScape, puis à partir de 1996, Javascript devient un standard et est supporté par tous les navigateurs.

En 1997, le langage est standardisé sous le nom ECMAScript. Javascript est une implémentation d’ECMAScript (ES) (la version la plus récente est la 8ème : ES8)

Définition

Qu’est-ce qu’une variable ?

En informatique, une variable est un élément de code qui fait référence à une position de mémoire qui contient de la donnée et qui peut successivement prendre différentes valeurs au cours de l’exécution d’un programme.

Nous verrons des exemples un peu plus loin dans cet article.

Convention de nommage

En tant que développeur, nous sommes soumis à des conventions pour nommer nos variables.

Pourquoi ? Pour une question de lisibilité du code et de maintenabilité.

En JavaScript, un nom de variable doit obligatoirement commencer par une lettre (minuscule ou majuscule), un "$" ou un "_". Un nom de variable peut aussi contenir des chiffres, et les caractères spéciaux "$" et "_".

Mais attention : on ne peut pas faire commencer le nom de la variable par un chiffre !

Notez aussi que les espaces sont interdits dans le nom d’une variable. Cela produirait forcément une erreur.

Convention de nommage en JS
Convention de nommage en JS

Aussi, on choisira un nom qui donne du sens à la variable, de préférence en anglais. Par exemple, pour stocker mon prénom dans le programme je nommerai ma variable "firstName".

Vous remarquerez qu’il n’y a pas d’espace et qu’à partir du deuxième mot on utilise une majuscule. Cette convention de nommage s’appelle lower camelCase, le tout premier mot de la variable commence toujours par une minuscule et les suivants sont marqués par une majuscule en début de mot.

Exemples camelCase
Exemples de variables nommées avec le casing camelCase

Déclaration

Une variable doit obligatoirement être déclarée, c'est-à-dire qu'on lui réserve un emplacement dans la mémoire. De manière optionnelle, il est possible de lui assigner une valeur au moment de la déclaration.

< mot-clé de déclaration > < nom de la variable > [ = valeur de départ ] ;

Quelques exemples :

1
2
3
4
// Déclaration simple, on réserve l'espace mémoire
let firstName;
// Déclaration avec assignation de valeur
let ageOfParticipant = 28;

Voyons maintenant les différents mots-clés qui nous permettent de déclarer en JavaScript.

Déclaration avec let

Le keyword "let" nous permet de déclarer une variable dont la valeur peut changer.

1
2
let nombre = 150; // nombre value is 150
nombre = 42; // nombre value is 42

Déclaration avec const

Le keyword "const" nous permet de déclarer une variable dont la valeur est constante. Elle ne peut PAS changer.

1
2
const favoriteSchool = "CodeWise";
favoriteSchool = "Another School"; // => TypeError: Assignement to constant variable.

Déclaration avec var

Le keyword "var" est similaire à "let". Néanmoins il y a une différence dans la portée de la variable que nous verrons plus bas

"var" est déprécié depuis le passage à ES6 et devrait toujours être remplacé par un "let".

En conclusion, selon le mot-clé que vous utilisez, la portée et la manière d'utiliser la variable peuvent changer.

L’assignation

Comme vu dans les exemples précédents, pour assigner une valeur à une variable, on utilise l’opérateur d’affectation "=".

Il est très important de bien distinguer la déclaration (réservation d'espace mémoire) de l'assignation (aussi appelée définition) qui revient à écrire une valeur dans cet espace mémoire.

On peut assigner une valeur lors de la déclaration de la variable, ce qu'on appelle l’initialisation.

1
let age = 25;

Mais on peut également assigner une valeur après la déclaration, pour assigner une nouvelle valeur à notre variable, qui écrasera la valeur précédente.

1
2
3
let age = 25; // age value is 25
age = 26; // age value is 26
age = age + 1 // age value is 27

Notez qu'on peut utiliser la valeur courante d’une variable pour calculer une nouvelle valeur à lui assigner.

Type d’une variable

En JavaScript comme dans différents langages, nous manipulons plusieurs types de données :

  • Des nombres (Number), entiers ou à virgule.
  • Des chaînes de caractères (String).
  • Des tableaux (Array).
  • Des objets (Object).
  • Des booléens (Boolean), pouvant contenir la valeur true ou false.

On peut connaître le type d’une variable avec l'opérateur "typeof" :

1
2
3
4
5
6
7
8
9
10
11
const firstName = "John";
typeof firstname; // => "string"

const age = 25;
typeof age; // => "number"

const user = {
    firstName : "John",
    age : 25
}
typeof user; // => "object"
Exemple d'utilisation de l'opérateur typeof

Portée d’une variable

La portée d'une variable correspond à l'ensemble des endroits dans votre code où la variable est accessible.

Une variable est généralement déclarée à l’intérieur d’un bloc d’instruction. Dans ce cas, elle est connue jusqu’à la fin du bloc d’instruction.

On dit que sa portée se limite au bloc d'instruction dans lequel elle est déclarée.

Si une variable est déclarée en dehors de tout bloc d'instruction, on dit que c'est une variable globale. Elle est alors disponible dans tout le fichier.

Un bloc d'instruction représente l'ensemble des instructions contenues entre deux accolades.

syntaxe instruction

Règle d’indentation : les instructions mises entre accolades sont indentées. C'est à dire qu'on les décale vers la droite de 2 ou 4 espaces pour améliorer la lisibilité du code.

Cas exceptionnel : lorsqu'une variable est déclarée avec le mot-clé "var", sa portée est limitée à la fonction dans laquelle elle est déclarée et non pas au bloc d'instruction dans lequel elle est située.

Voyons de plus près la différence entre "let" et "var".

La portée de let

1
2
3
4
5
6
7
8
9
10
11
12
13
// name n'est pas accessible avant d'être déclarée, on obtient donc une erreur
console.log(name); // => ReferenceError : name is not defined

let name = "John"; // déclaration et initialisation d'une variable "name" globale

if (name === "John") {
  let age = 25; // déclaration de "age" dans le bloc
  console.log(age); // => 25
}
console.log(name); // => "John", accessible car déclarée de manière globale

// age n'est pas accessible en dehors du bloc, on obtient donc une erreur
console.log(age); // => // => ReferenceError : name is not defined
Exemple montrant la portée d'une variable déclarée avec "let"

La portée de var

1
2
3
4
5
6
7
8
9
10
11
12
13
// avec "var" la variable est accessible au dessus de la déclaration, mais elle n'a pas encore de valeur.
console.log(name); // => undefined

var name = "John"; // déclaration et initialisation d'une variable "name" globale

if (name === "John") {
  var age = 25; // déclaration de "age" dans le bloc
  console.log(age); // => 25
}
console.log(name); // => "John", accessible car déclarée de manière globale

// age a été assignée dans le bloc mais elle reste accessible en dehors.
console.log(age); // => 25
Exemple montrant la portée d'une variable déclarée avec "var"

C'est pour cette raison qu'on évite au maximum d'utiliser "var". C'est un comportement beaucoup plus imprévisible et contre-intuitif qui peut créer ce qu'on appelle des effets de bord.

Constante

Comme son nom l’indique, c'est une varibale qui n'est pas variable (oui oui) mais constante !

Une constante est déclarée avec le mot-clé "const", et ne peut être initialisée qu’une fois. On ne peut pas lui réassigner d’autres valeur.

Toutes les variables dont les valeurs ne sont pas réassignées devraient être déclarées avec const pour des raisons de performance et simplicité de lecture du code

1
2
const favoriteSchool = "CodeWise";
favoriteSchool = "Another School"; // => TypeError: Assignement to constant variable.

La portée d'une variable déclarée avec le keyword "const" est limitée à son bloc d'instruction, exactement comme pour "let".

Conclusion

Vous venez de découvrir les variables en JavaScript.

Chaque langage utilise un standard différent de nommage ou de syntaxe mais les principes restent toujours les mêmes. Si vous avez des idées d’amélioration pour cet article, laissez-nous un commentaire !

Si vous avez réussi à tout suivre, félicitations ! Vous pouvez passez au chapitre suivant : JavaScript - Les opérateurs.

Auteur

image auteur
Lucas BENTO-VERSACE Alternant chez Codewise / Étudiant en développement web lucas.bentoversace@ynov.com
"Alternant chez Codewise, passioné par l'informatique et les technologies depuis mon plus jeune âge. J'ai découvert le monde du web et depuis je ne m'en lasse pas ! Fan de jeux vidéos, de sports et de musiques. "