Valeur primitive et valeur de référence ECMAScript

Dans ECMAScript, une variable peut exister sous deux types de valeurs, à savoir les valeurs primitives et les valeurs de référence.

Valeurs primitives et valeurs de référence

Dans ECMAScript, une variable peut exister sous deux types de valeurs, à savoir les valeurs primitives et les valeurs de référence.

Valeur primitive
Les segments de données simples stockés dans la pile (pile), c'est-à-dire que leurs valeurs sont stockées directement à l'emplacement d'accès des variables.
Valeur de référence
Les objets stockés dans la pile (heap), c'est-à-dire que la valeur stockée dans la variable est un pointeur (pointeur), pointant vers l'emplacement de mémoire où l'objet est stocké.

Lors de l'affectation de valeurs à une variable, l'interpréteur ECMAScript doit déterminer si la valeur est de type primitif ou de type de référence. Pour cela, l'interpréteur doit essayer de déterminerSi la valeur est l'un des types primitifs d'ECMAScriptà savoir Undefined, Null, Boolean, Number et String. Étant donné que l'espace occupé par ces types primitifs est fixe, on peut les stocker dans une plus petite région de mémoire - la pile. De cette manière, le stockage facilite la recherche rapide des valeurs des variables.

Dans de nombreux langages, les chaînes de caractères sont considérées comme des types de référence, et non des types primitifs, car la longueur des chaînes de caractères est variable. ECMAScript rompt avec cette tradition.

Si une valeur est de type de référence, son espace de stockage sera alloué dans la pile. Étant donné que la taille des valeurs de référence peut changer, on ne peut pas les placer dans la pile, sinon cela réduirait la vitesse de recherche des variables. Au lieu de cela, la valeur stockée dans l'espace de pile de la variable est l'adresse de l'objet stocké dans la pile. La taille de l'adresse est fixe, donc sa stockage dans la pile n'a aucune incidence négative sur les performances des variables. Voici un exemple :

Les valeurs et les références originales stockées dans les piles et les tampons

Types primitifs

Comme mentionné précédemment, ECMAScript comporte 5 types primitifs (primitive type), à savoir Undefined, Null, Boolean, Number et String. ECMA-262 définit le termeType (type)Défini comme un ensemble de valeurs, chaque type primitif définit la gamme des valeurs qu'il contient et la forme littérale de ces valeurs.

ECMAScript fournit l'opérateur typeof pour déterminer si une valeur appartient à une certaine gamme de types. On peut utiliser cet opérateur pour déterminer si une valeur représente un type primitif : si c'est le cas, on peut également déterminer quel type primitif il représente.

Dans les chapitres ultérieurs, nous vous expliquerons en profondeur les types primitifs et les types de référence d'ECMAScript.