Statische Variablen in JavaScript

Harshit Jindal 12 Oktober 2023
  1. Verwenden Sie die Eigenschaft einer Funktion, um statische Variablen in JavaScript zu erstellen
  2. Verwenden Sie IIFE (Immediately Invoked Function Expression), um statische Variablen in JavaScript zu erstellen
  3. Verwenden Sie die argument.callee, um statische Variablen in JavaScript zu erstellen
  4. Verwenden Sie Konstruktoren, um statische Variablen in JavaScript zu erstellen
Statische Variablen in JavaScript

In diesem Tutorial wird erläutert, wie Sie statische Variablen in JavaScript erstellen. Statische Variablen sind Variablen, die normalerweise in Funktionen verwendet werden und deren Wert zwischen Funktionsaufrufen beibehalten wird. Das Schlüsselwort static hilft beim Definieren einer statischen Eigenschaft oder Methode einer Klasse.

Verwenden Sie die Eigenschaft einer Funktion, um statische Variablen in JavaScript zu erstellen

Funktionen in JavaScript sind Objekte und können Eigenschaften haben. Wir können also statische Variablen erstellen, indem wir die Eigenschaften der Funktion deklarieren. Sie behalten ihre Werte wie globale Variablen bei und können nicht außerhalb der Funktionen geändert werden, wodurch sie viel aufgeräumter sind als globale Variablen.

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

Das mehrmalige Aufrufen der obigen Funktion erhöht den Wert des Zählers und kann nicht außerhalb der Funktion aufgerufen werden, wie bei globalen Variablen, die das ganze Chaos stoppen.

Verwenden Sie IIFE (Immediately Invoked Function Expression), um statische Variablen in JavaScript zu erstellen

IIFE sind Funktionen, die ausgeführt werden, sobald sie definiert sind. Es besteht aus zwei Teilen:

  1. Eine anonyme Funktion mit einem lexikalischen Bereich, der vom Gruppierungsoperator () eingeschlossen wird.
  2. Funktionsausdruck, der direkt von JavaScript interpretiert wird.
var incr = (function() {
  var i = 1;
  return function() {
    return i++;
  }
})();
incr();  // returns 1
incr();  // returns 2

Bei jedem Aufruf der Funktion erhöht sich der Zähler i um eins. Auf i kann außerhalb nicht zugegriffen werden, da es sich um eine Eigenschaft einer Funktion handelt, genau wie bei einer typischen statischen Variablen innerhalb einer Klasse.

Verwenden Sie die argument.callee, um statische Variablen in JavaScript zu erstellen

Wir können argument.callee verwenden, um statische Variablen in JavaScript zu speichern. Es bezieht sich auf die aktuell ausgeführte Funktion, und wir können ihr Eigenschaften direkt wie einem Funktionsobjekt zuordnen.

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

Diese Methode ist Methode 1 ziemlich ähnlich. Der einzige Unterschied besteht darin, dass wir anstelle des direkten Anhängens von Eigenschaften die Datei arguments.callee verwenden, um der aktuell ausgeführten Funktion Eigenschaften hinzuzufügen.

Verwenden Sie Konstruktoren, um statische Variablen in JavaScript zu erstellen

Diese Methode ist die äquivalente Version stark typisierter objektorientierter Sprachen wie C++ / Java / C#. Wir versuchen, Variablen einem ganzen Typ und nicht allen Instanzen zuzuweisen.

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();

Hier erstellen wir die Konstruktionsfunktion delftClass und weisen dann eine statische Eigenschaft zu, die nichts mit der erstellten Instanz zu tun hat. JavaScript behandelt Funktionen als Objekte. Als Objekt können wir einer Funktion Eigenschaften zuweisen. Alle Instanzen teilen sich die statische Variable.

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

Verwandter Artikel - JavaScript Variable