Variablen und Scope
Bis zum Jahre 2015 wurden Variablen in Javascript gar nicht oder mit var deklariert.
Seit Javascript 2015 gibt es auch let und const. Wenn man heute ein Programm
neu schreib verwendet man nur let und const.
Lebensdauer von Javascript und Variablen im Browser
Abschnitt betitelt „Lebensdauer von Javascript und Variablen im Browser“Zwei wichtige Hinweis zur Lebensdauer von Variablen:
-
Wenn Sie eine Webseite neu laden oder aktualisieren, startet das JavaScript-Programm komplett neu. Alle Variablen werden dabei zurückgesetzt - als ob Sie das Programm zum ersten Mal starten würden.
-
Wenn Sie dieselbe Webseite in mehreren Browser-Fenstern öffnen, läuft in jedem Fenster ein eigenes, unabhängiges JavaScript-Programm. Eine Variable
aim ersten Fenster hat nichts mit einer Variableaim zweiten Fenster zu tun - sie sind völlig getrennt voneinander.
Sichtbarkeit von Variablen mit let und Konstanten mit const
Abschnitt betitelt „Sichtbarkeit von Variablen mit let und Konstanten mit const“let und const haben einen Block-Scope - sie gelten von { bis }.
if ( true ) { // block - scope let x = 'foo'; const y = 'bar'; } console.log(x); // ReferenceError : x is not defined console.log(y); // ReferenceError : y is not definedKonstanten mit const
Abschnitt betitelt „Konstanten mit const“Da Javascript eine dynamische Sprache hat die deklaration als Konstanten nur wenig Wirkung. Für einfache Werte verhalten Sie sich wie erwartet:
const myNumber = 1;myNumber = 2; // Uncaught TypeError: Assignment to constant variable.Bei Objekten oder Arrays zeigt sich die Beschränktheit:
const myArray = [1,2,3];myArray[0] = 100; // einen Wert zu ändern ist erlaubtmyArray.push(4); // einen Wert hinzu zu fügen ist erlaubtmyArray.splice(2, 1); // nach dem 2.Element ein Element entfernen ist erlaubtmyArray = [5,6,7]; // Uncaught TypeError: invalid assignment to const 'myArray'
const myObject = { farbe: 'grün', anzahl : 4 }myObject.farbe = 'rot'; // einen Wert zu ändern ist erlaubtmyObject.kg = 12; // eine neue Eigenschaft (und ihren Wert) hinzu zu fügen ist erlaubtmyObject = { muster: 'grün' }; // Uncaught TypeError: invalid assignment to const 'myObject'Den Inhalt des Arrays oder Objekts zu ändern ist erlaubt. Nur das Array oder Objekt ganz zu ersetzen ist verboten.
Objekt konstant machen mit Object.freeze
Abschnitt betitelt „Objekt konstant machen mit Object.freeze“Mit der Methode Object.freeze kann man den Inhalt eines Objekts
oder Arrays konstant machen, aber nur “eine Ebene tief”: verschachtelte
Objekte bzw. Arrays werden nicht geschützt
const y = [1,2,[3]];Object.freeze(y);y[0] = 100; // Wert wird nicht verändert, bleibt 1, kein Fehlery.push(4); // Uncaught TypeError: can't define array index property past the end of an array with non-writable lengthy[2][0] = 100; // Verschachteltes Array kann geändert werden!y[2].push( 200 ); // und kann erweitert werden!JSON.stringify(y); // "[1,2,[100,200]]"
const z = { farbe: 'grün', anzahl : 4, other : { a:1, b:2, c:3 } }Object.freeze(z);z['farbe'] = 'rot'; // Wert wird nicht verändert, kein Fehlerz.kg = 12; // Wert wird nicht hinzu gefügt, kein Fehlerz.other.a = 100; // Wert im verschachtelten Objekt kann geändert werden!JSON.stringify(z) // '{"farbe":"grün","anzahl":4,"other":{"a":100,"b":2,"c":3}}'Kurz-Schreibweise für Objekte + Werte
Abschnitt betitelt „Kurz-Schreibweise für Objekte + Werte“Wenn in der JSON Schreibweise eines Objekts eine Variable verwendet wird, die den gleichen Namen hat wie eine Eigenschaft die erzeugt werden soll, dann kann man die Schreibweise verkürzen:
let x = 10;let y = 12;let circle1 = { color: 'yellow', r: 25, x: x, y: y }; // langlet circle2 = { color: 'yellow', r: 25, x, y }; // kurzDie Variablen x und y werden hier als “shorthand property names” verwendet.
Zuweisung mit Desctructuring
Abschnitt betitelt „Zuweisung mit Desctructuring“Auf der linken Seite einer Zuweisung kann die Array oder Objekt-Schreibweise von JSON verwendet werden um mehrere Variablen auf einmal zuzuweisen.
Das kann sehr komplex werden, hier ein paar einfache Beispiele:
let [x,y] = [10,12]; // zwei Werte werden an zwei Variablen zugewiesenlet p = [10,12];let [x1,y1] = p; // zwei Werte werden an zwei Variablen zugewiesenlet circle = { m: p, r: 20 };let { m: [x2, y2], r } = circle // Achtung: kurz-schreibweise für r: rFunktionsparameter mit Desctructuring
Abschnitt betitelt „Funktionsparameter mit Desctructuring“Auch in den Funktionsparametern kann Destructuring verwendet werden. Angenommen wir haben ein user-Objekt:
const user = { id: 42, displayName: "jdoe", fullName: { firstName: "Jane", lastName: "Doe", },};
function logFullUser(user) { console.log("full information about the user:"); console.dir(user);}logFullUser(user);full information about the user: debugger eval code:11:11Object { id: 42, displayName: "jdoe", fullName: {…} }
function logUserId({ id }) { console.log("the user id is", id);}logUserId(user); // the user id is 42Siehe auch
Abschnitt betitelt „Siehe auch“- MDN: Destructuring
- MDN: Object initializer zu shorthand property names
beantwortet: 0 / 0 (0%)
richtig: 0 / 0 (0%)