Variables statiques en JavaScript

Harshit Jindal 12 octobre 2023
  1. Utiliser la propriété d’une fonction pour créer des variables statiques en JavaScript
  2. Utilisez IIFE (expression de fonction immédiatement invoquée) pour créer des variables statiques en JavaScript
  3. Utilisez arguments.callee pour créer des variables statiques en JavaScript
  4. Utiliser des constructeurs pour créer des variables statiques en JavaScript
Variables statiques en JavaScript

Ce didacticiel explique comment créer des variables statiques en JavaScript. Les variables statiques sont des variables, généralement utilisées dans les fonctions, qui conservent leur valeur entre les appels de fonction. Le mot-clé static permet de définir une propriété statique ou une méthode d’une classe.

Utiliser la propriété d’une fonction pour créer des variables statiques en JavaScript

Les fonctions en JavaScript sont des objets et peuvent avoir des propriétés. Ainsi, nous pouvons créer des variables statiques en déclarant les propriétés de la fonction. Ils conservent leurs valeurs comme des variables globales et ne peuvent pas être modifiés en dehors des fonctions, ce qui les rend beaucoup plus ordonnés que les variables globales.

function getId() {
  if (typeof getId.counter == 'undefined') {
    getId.counter = 0;
  }
  alert(++getId.counter);
}

L’appel de la fonction ci-dessus plusieurs fois augmente la valeur du compteur et ne peut pas être accédé en dehors de la fonction comme les variables globales arrêtant tout le désordre.

Utilisez IIFE (expression de fonction immédiatement invoquée) pour créer des variables statiques en JavaScript

Les IIFE sont des fonctions qui sont exécutées dès qu’elles sont définies. Il se compose de deux parties:

  1. Une fonction anonyme avec une portée lexicale entourée par l’opérateur de regroupement ().
  2. Expression de fonction directement interprétée par JavaScript.
var incr = (function() {
  var i = 1;
  return function() {
    return i++;
  }
})();
incr();  // returns 1
incr();  // returns 2

A chaque appel de la fonction, le compteur i augmente de un. i est inaccessible à l’extérieur car c’est la propriété d’une fonction, tout comme une variable statique typique à l’intérieur d’une classe.

Utilisez arguments.callee pour créer des variables statiques en JavaScript

Nous pouvons utiliser arguments.callee pour stocker des variables statiques en JavaScript. Il fait référence à la fonction en cours d’exécution et nous pouvons lui attacher des propriétés directement comme nous le ferions à un objet fonction.

function() {
  arguments.callee.myStaticVar = arguments.callee.myStaticVar || 1;
  arguments.callee.myStaticVar++;
  alert(arguments.callee.myStaticVar);
}

Cette méthode est assez similaire à la méthode 1, la seule différence étant qu’au lieu d’attacher directement des propriétés, nous utilisons arguments.callee pour ajouter des propriétés à la fonction en cours d’exécution.

Utiliser des constructeurs pour créer des variables statiques en JavaScript

Cette méthode est la version équivalente des langages orientés objet fortement typés comme C++ / Java / C#. Nous essayons d’assigner des variables à un type entier et non à toutes les instances.

function delftClass() {
  var privateVariable = 'foo';
  this.publicVariable = 'bar';
  this.privilegedMethod = function() {
    alert(privateVariable);
  };
}
delftClass.prototype.publicMethod = function() {
  alert(this.publicVariable);
};

delftClass.staticProperty = 'baz';
var myInstance = new delftClass();

Ici, nous créons la fonction de construction delftClass puis attribuons une propriété statique qui n’a rien à voir avec l’instance créée. JavaScript traite les fonctions comme des objets, donc étant un objet, nous pouvons affecter des propriétés à une fonction. Toutes les instances partageront la variable statique.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Article connexe - JavaScript Variable