Javascript Fragen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Wann benutzt man "var" und wann "const" und gerne mit Beispielen bitte

Beide Schlüsselwörter werden bei der Deklaration von Variablen angewandt.

Ein erster Unterschied macht sich beim geltenden Zugriffsbereich der angelegten Variablen bemerkbar:

const: Variablen, die mit const angelegt werden, sind nur innerhalb des Code-Blocks/Kontext sichtbar, in dem die Deklaration stattfand.

var: Variablen, die mit var angelegt werden, sind ebenfalls innerhalb ihres gesamten Kontexts sichtbar, allerdings ist der weitreichender.

  • Wurde die Variable in einer Funktion deklariert, ist sie innerhalb der gesamten Funktion bekannt.
  • Wurde die Variable in einem static initializer (einer Klasse) deklariert, ist sie nur in diesem Codeblock bekannt.
  • Wenn sie innerhalb eines Moduls deklariert wurde (außerhalb einer Funktion/eines static initializer), ist sie im gesamten Modul bekannt.
  • In allen anderen Fällen ist die Variable global.

Beispiel:

function doSomething() {
  for (var i = 0; i < 3; ++i) {
    var result1 = "Hello";
    const result2 = "World";
  }

  console.log(result1);
  console.log(result2);
}

doSomething();

Beide Variablen werden innerhalb eines Schleifenblocks angelegt. Da result1 via var deklariert wurde, ist sie im gesamten Funktionsblock bekannt. In der Konsole wird also Hello ausgegeben. Der Versuch, result2 auszugeben, wird hingegen scheitern, da sich der Gültigkeitsbereich dieser Variable auf den Schleifenblock beschränkt.

Ein weiterer wesentlicher Unterschied liegt in der Veränderbarkeit der Variablen. Mit const werden Konstanten kreiert. Der Wert der Variable ist also nachträglich nicht wieder änderbar.

Beispiel:

const value = 1;
value = 2; // error

var value2 = 1;
value2 = 2; // works

In der Praxis ist es zunächst einmal ratsam, den Gültigkeitsbereich der Variablen immer nur auf den Kontext zu beschränken, in dem sie auch wirklich benötigt werden. Dein Programmcode wird dadurch übersichtlicher und potenzielle Fehlerquellen werden reduziert.

Bei der konkreten Wahl würde ich empfehlen, nach der Reihenfolge const-let-var zu prüfen, was (nach aktuellem Stand) am besten passt.

Oftmals hat man Variablen, bei denen man von vornherein weiß, dass sie ihren Wert später nicht mehr ändern. Also können sie mit const angelegt werden. Für alle anderen Fälle wäre in der Regel let zu bevorzugen, denn mit diesem Schlüsselwort werden veränderliche Variablen erzeugt, die wie const nur in ihrem Kontext/Block gültig sind.

Das Schlüsselwort var hingegen findet seit Einführung von let/const nicht mehr so oft Verwendung. Es kann zwar helfen, Code zu verkürzen (siehe folgendes Beispiel),

do {
  var name = prompt("Please enter your name");
}
while (name.length < 1);

allerdings erschwert so etwas es auch, Code zu lesen und zu verstehen.

Eine besser lesbare Lösung:

let name = "";

do {
  name = prompt("Please enter your name");
}
while (name.length < 1);
Was sind Interpolation und Concatenation?

In beiden Fällen geht es darum, Strings miteinander zu verbinden.

Für eine Konkatenation wird der Konkatenationsoperator + verwendet:

const name = "Ernie";
const greeting = "Hello " + name + "!";
console.log(greeting);

Für eine Interpolation verwendet man Template-Literale, die nicht via Anführungszeichen sondern mittels ` umklammert werden. Dynamische Werte (Variablen, Funktionsrückgaben), die in dem String eingesetzt werden sollen, werden mit ${} umschlossen.

function getAge(yearOfBirth) {
  return new Date().getFullYear() - yearOfBirth;
}

const name = "Ernie";
const yearOfBirth = 1971;
const greeting = `Hello ${name}! You are ${getAge(yearOfBirth)} years old.`;
console.log(greeting);

Interpolationen haben den Vorteil, oft kürzer und einfacher lesbar zu sein. Ein Beispiel zur Demonstration:

function getRangeField(min, max, name) {
  const html = "<input max=\"" + max + "\" min=\"" + min + "\" name=\"" + name + "\" type=\"range\">";
  return html;
}

function getRangeField2(min, max, name) {
  const html = `<input max="${max}" min="${min}" name="${name}" type="range">`;
  return html;
}

Zudem könnte sich ein Template-Literal über mehrere Zeilen erstrecken:

const sentence = `This is 
a very long 
sentence`;

Mit String-Literalen ist das nicht möglich, du müsstest sie in Konkatenationen auftrennen:

const sentence = "This is " +
"a very long " +
"sentence";

Noch eine Besonderheit von Template-Literals ist, dass man sie zur Zwischenverarbeitung noch einmal an eine eigene Funktion übergeben kann.

Beispiel:

function getAge(yearOfBirth) {
  return new Date().getFullYear() - yearOfBirth;
}

function interpolate(staticParts, name, age) {
  const start = staticParts[0].toUpperCase();
  const end = age > 50 ? "years old." : "years young.";
  return `${start}Bert! You are ${age} ${end}`;
}

const name = "Ernie";
const yearOfBirth = 1971;
const greeting = interpolate`Hello ${name}! You are ${getAge(yearOfBirth)} years old.`;
console.log(greeting);

Innerhalb der Funktion hat man Zugriff auf alle Bestandteile des Template-Literals. Man kann sie wie man will neu zusammenbauen.

Ein denkbarer praktischer Anwendungsfall wäre der, dass man einen Text anhand eines äußeren Einfluss (z.B. die Sprache) oder eines dynamischen Bestandteils wie einem Namen neu ausrichtet (z.B. die Anrede oder einzelne Personalpronomen).

Von Experte Babelfish bestätigt
Var und const
Wann benutzt man "var" und wann "const" und gerne mit Beispielen bitte

Du benutzt const immer dann, wenn einer Variable kein neuer Wert mit = zugewiesen wird. Wichtig ist, dass es nicht heißt, dass du z.B. ein Objekt in der Konstante nicht mehr verändern kannst, nur, dass du nicht etwa ein anderes Objekt mit = zuweisen kannst.

Var benutzt du gar nicht, weil das veraltet ist. Die Unterschiede sind für dich nicht wirklich relevant, aber heutzutage nutzt man das modernere let. Das verhält sich teils etwas anders, meist einfach sinnvoller. Also nutze let, solange du keinen Grund dagegen hast.

Im Grunde verhindert das nutzen von const einfach Fehler, weil du nicht ausversehen einen neuen Wert zuweisen kannst und im Code klarer ist, dass hier kein neuer Wert zugewiesen werden soll bzw. der Wert sich nicht ändern wird. Aber an sich musst du const nicht nutzen und könntest immer let nutzen. Denke das ist häufig etwas, was Anfänger verwirrt.

Bei Interpolation und Concatenation meinst du Strings? Da müsstest du eventuell genauer sagen auf was du dich beziehst und was die Frage ist.

Woher ich das weiß:Berufserfahrung – Software Entwickler / Devops
Wann benutzt man "var" und wann "const" und gerne mit Beispielen bitte

var am besten gar nicht, const immer dann, wenn du den Wert später nicht ändern willst.

Was sind Interpolation und Concatenation? Und wann benutzt man sie?

Da geht es um Stringmanipulation, also das Aufbauen von Texten.

Woher ich das weiß:Berufserfahrung – Softwareentwicklerin

const wird verwendet wenn der wert der variable nicht geändert werden soll/kann. (Z.b wenn man html Elemente speichert und die zu bearbeiten)

var wird verwendet wenn der wert der variable geändert werden kann (wie z.b. bei einem script wo eine zahl hochgeht wenn man einen Knopf drückt)

Woher ich das weiß:Hobby – hobby programmierer seit 2020