Suche…
Syntax
- var foo [= value [, foo2 [, foo3 ... [, fooN]]]];
- let bar [= value [, bar2 [, foo3 ... [, barN]]]];
- const baz = value [, baz2 = value2 [, ... [, bazN = valueN]]];
Bemerkungen
Siehe auch:
Konstanten neu zuordnen
Konstanten können nicht neu zugewiesen werden.
const foo = "bar";
foo = "hello";
Drucke:
Uncaught TypeError: Assignment to constant.
Konstanten ändern
Das Deklarieren eine Variablen const
nur verhindert , dass sein Wert aus durch einen neuen Wert ersetzt. const
beschränkt den internen Zustand eines Objekts nicht. Das folgende Beispiel zeigt, dass ein Wert einer Eigenschaft eines const
Objekts geändert werden kann und sogar neue Eigenschaften hinzugefügt werden können, da das Objekt, das der person
zugewiesen ist, geändert, jedoch nicht ersetzt wird .
const person = {
name: "John"
};
console.log('The name of the person is', person.name);
person.name = "Steve";
console.log('The name of the person is', person.name);
person.surname = "Fox";
console.log('The name of the person is', person.name, 'and the surname is', person.surname);
Ergebnis:
The name of the person is John
The name of the person is Steve
The name of the person is Steve and the surname is Fox
In diesem Beispiel haben wir ein konstantes Objekt namens person
und die person.name
Eigenschaft neu zugewiesen und die neue person.surname
.
Konstanten deklarieren und initialisieren
Sie können eine Konstante mit dem Schlüsselwort const
initialisieren.
const foo = 100;
const bar = false;
const person = { name: "John" };
const fun = function () = { /* ... */ };
const arrowFun = () => /* ... */ ;
Wichtig
Sie müssen eine Konstante in derselben Anweisung deklarieren und initialisieren.
Erklärung
Es gibt vier grundlegende Möglichkeiten, eine Variable in JavaScript zu deklarieren: Verwenden Sie die Schlüsselwörter var
, let
oder const
oder let
oder gar ohne Schlüsselwort ("bare" -Deklaration). Die verwendete Methode bestimmt den sich ergebenden Gültigkeitsbereich der Variablen oder die Neuzuordnung von const
.
- Das Schlüsselwort
var
erstellt eine Funktionsbereichsvariable. - Das
let
Schlüsselwort erstellt eine Blockbereichsvariable. - Das Schlüsselwort
const
erstellt eine Blockbereichsvariable, die nicht erneut zugewiesen werden kann. - Eine bloße Deklaration erstellt eine globale Variable.
var a = 'foo'; // Function-scope
let b = 'foo'; // Block-scope
const c = 'foo'; // Block-scope & immutable reference
Denken Sie daran, dass Sie Konstanten nicht deklarieren können, ohne sie gleichzeitig zu initialisieren.
const foo; // "Uncaught SyntaxError: Missing initializer in const declaration"
(Ein Beispiel für die Variablendeklaration ohne Schlüsselwörter ist oben aus technischen Gründen nicht enthalten. Lesen Sie weiter, um ein Beispiel zu sehen.)
Datentypen
JavaScript-Variablen können viele Datentypen enthalten: Zahlen, Strings, Arrays, Objekte und mehr:
// Number
var length = 16;
// String
var message = "Hello, World!";
// Array
var carNames = ['Chevrolet', 'Nissan', 'BMW'];
// Object
var person = {
firstName: "John",
lastName: "Doe"
};
JavaScript hat dynamische Typen. Das bedeutet, dass dieselbe Variable als verschiedene Typen verwendet werden kann:
var a; // a is undefined
var a = 5; // a is a Number
var a = "John"; // a is a String
Nicht definiert
Deklarierte Variablen ohne Wert haben den Wert undefined
var a;
console.log(a); // logs: undefined
Der Versuch, den Wert nicht deklarierter Variablen abzurufen, führt zu einem ReferenceError. Der Typ der nicht deklarierten und der unitialisierten Variablen ist jedoch "undefiniert":
var a;
console.log(typeof a === "undefined"); // logs: true
console.log(typeof variableDoesNotExist === "undefined"); // logs: true
Zuordnung
Um einer zuvor deklarierten Variablen einen Wert zuzuweisen, verwenden Sie den Zuweisungsoperator =
:
a = 6;
b = "Foo";
Alternativ zur unabhängigen Deklaration und Zuweisung können beide Schritte in einer Anweisung ausgeführt werden:
var a = 6;
let b = "Foo";
In dieser Syntax können globale Variablen ohne ein Schlüsselwort deklariert werden. Wenn man eine leere Variable unmittelbar nach dem Zuweisen ohne Zuweisung deklariert, ist der Interpreter nicht in der Lage, globale Deklarationen von a;
zu unterscheiden a;
von Verweisen auf Variablen a;
.
c = 5;
c = "Now the value is a String.";
myNewGlobal; // ReferenceError
Beachten Sie jedoch, dass die obige Syntax generell nicht empfohlen wird und nicht dem strengen Modus entspricht. Dadurch soll das Szenario vermieden werden, in dem ein Programmierer versehentlich ein let
oder var
Schlüsselwort aus seiner Anweisung löscht und versehentlich eine Variable im globalen Namespace erstellt, ohne es zu merken. Dies kann den globalen Namespace verschmutzen, Konflikte mit Bibliotheken und das ordnungsgemäße Funktionieren eines Skripts verursachen. Daher sollten globale Variablen mit dem Schlüsselwort var
im Kontext des Fensterobjekts deklariert und initialisiert werden, stattdessen wird die Absicht explizit angegeben.
Außerdem können Variablen mehrmals deklariert werden, indem jede Deklaration (und optionale Wertzuweisung) durch ein Komma getrennt wird. Bei Verwendung dieser Syntax müssen die Schlüsselwörter var und let nur einmal am Anfang jeder Anweisung verwendet werden.
globalA = "1", globalB = "2";
let x, y = 5;
var person = 'John Doe',
foo,
age = 14,
date = new Date();
Beachten Sie im vorhergehenden Codeausschnitt, dass die Reihenfolge, in der Deklarations- und Zuweisungsausdrücke ( var a, b, c = 2, d;
) vorkommen, keine Rolle spielt. Sie können die beiden frei mischen.
Die Funktionsdeklaration erstellt auch effektiv Variablen.
Mathematische Operationen und Zuordnung
Inkrement um
var a = 9,
b = 3;
b += a;
b
ist jetzt 12
Dies ist funktional identisch mit
b = b + a;
Dekrement um
var a = 9,
b = 3;
b -= a;
b
ist jetzt 6
Dies ist funktional identisch mit
b = b - a;
Mal
var a = 5,
b = 3;
b *= a;
b
ist jetzt 15
Dies ist funktional identisch mit
b = b * a;
Teilen durch
var a = 3,
b = 15;
b /= a;
b
ist jetzt 5
Dies ist funktional identisch mit
b = b / a;
Zur Macht von erhoben
var a = 3,
b = 15;
b **= a;
b
wird jetzt 3375 sein
Dies ist funktional identisch mit
b = b ** a;