Alle Zeichen – Buchstaben, Zahlen, Symbole usw. – zwischen doppelten ("
), einfachen ('
) oder umgekehrten Schrägstrichen (`) sind Stringprimitive. Sie haben in diesem Kurs bereits einige Beispiele für Strings gesehen: Die Instanzen von console.log
im vorherigen Modul enthielten Stringprimitive.
console.log( "Hello, World." );
> Hello, World.
"Hello, World."
ist ein Stringprimitiv. Das Ergebnis ist dasselbe, wenn Sie einfache Anführungszeichen oder Backticks verwenden:
console.log( 'Hello, World.' );
> Hello, World.
console.log(`Hello, World.`);
> Hello, World.
Eine Reihe von Zeichen in Anführungszeichen wird als Stringliteral bezeichnet. Doppelte und einfache Anführungszeichen verhalten sich gleich und können sich gegenseitig als Zeichen im String selbst enthalten:
console.log( "I'm a string." );
> I'm a string.
console.log( '"A string," I said.' );
> "A string," I said.
Eingeschlossene Zeichen, die im String identisch sind, schließen den String und führen wahrscheinlich zu Fehlern:
console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list
Um dies zu vermeiden, müssen Sie das Zeichen mit einem umgekehrten Schrägstrich (\
) maskieren:
console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.
Stringobjekt
Wenn das String
-Objekt als Funktion aufgerufen wird, wird ein bestimmter Wert in ein Stringliteral umgewandelt.
let myString = String( 10 );
myString
> "10"
typeof myString
> string
Wie unter Prototypische Vererbung beschrieben, müssen Sie das String
-Objekt selten als Konstruktor verwenden. Es wird ein Stringobjekt mit dem angegebenen Wert erstellt, zusammen mit den Methoden und Eigenschaften, die bereits vom String
-Objekt bereitgestellt werden, anstatt eines Stringliterals.
let stringObj = new String( "My new string." );
typeof stringObj
> object
stringObj
> String { "My new string." }
Verkettung
Wenn ein einzelnes Pluszeichen (+
) im Kontext von Strings statt von Zahlen verwendet wird, dient es als Verkettungsoperator, der mehrere Stringwerte zu einem einzigen String kombiniert:
console.log( "My" + " string." );
> My string.
Stringliterale und Vorlagenliterale
Für das Erstellen von Stringprimitiven können einfache, doppelte und Backticks verwendet werden. Sie können Backticks aber auch verwenden, um Template-Literals (manchmal auch „Template-Strings“ genannt) anzugeben. Im Gegensatz zu Stringliteralen, die durch einfache oder doppelte Anführungszeichen erstellt werden, ermöglichen Vorlagenliterale mehrzeilige Strings und Stringinterpolation.
const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break
const myString = `This
is a string.`;
console.log( myString );
> This
is a string.
Vorlagenliterale können Platzhalterausdrücke enthalten, die durch ein Dollarzeichen und geschweifte Klammern (${}
) gekennzeichnet sind. Diese Platzhalter werden standardmäßig „interpoliert“, d. h., der Platzhalter im endgültigen String wird durch das Ergebnis des Ausdrucks ersetzt.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
Ein Vorlagenliteral kann an eine benutzerdefinierte Funktion übergeben werden, um eine getaggte Vorlage zu erstellen. Dabei wird ein Funktionsaufruf verwendet, bei dem ein einzelnes Vorlagenliteral als Argumentsatz dient und dessen Platzhalter anhand der vom Autor definierten Logik ausgefüllt werden.
Das erste Argument einer Tag-Funktion enthält ein Array von Stringwerten und die verbleibenden Argumente definieren die Platzhalter. Dieses Array von Stringwerten wird erstellt, indem das Vorlagenliteral an jedem enthaltenen Platzhalter „aufgeteilt“ wird. Das erste Element im Array enthält alle Zeichen bis zum ersten Platzhalter, das zweite Element alle Zeichen zwischen dem ersten und dem zweiten Platzhalter usw. Jeder Platzhalter wird der Tag-Funktion als eigenständiger Wert mit einem zugehörigen Platzhalter übergeben.
const myNoun = "template literal";
function myTagFunction( myStrings, myPlaceholder ) {
const myInitialString = myStrings[ 0 ];
console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}
myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."
Wissen testen
Mit welchem Zeichen werden Zeichen maskiert?
∖
)"
)/
)Welches Zeichen wird für die Konkatenierung verwendet?
+
&
.