In JavaScript scheint ein Backtick † genauso zu funktionieren wie ein einfaches Anführungszeichen. Zum Beispiel kann ich einen Backtick verwenden, um eine Zeichenfolge wie folgt zu definieren:
var s = `abc`;
Gibt es eine Art und Weise, in der sich das Verhalten des Backticks tatsächlich von dem eines einzelnen Anführungszeichens unterscheidet?
† Beachten Sie, dass unter Programmierern "Backtick" ein Name für das ist, was allgemein als schwerwiegender Akzent bezeichnet wird . Programmierer verwenden manchmal auch die alternativen Namen "backquote" und "backgrave". Auch auf Stack - Überlauf und anderswo, andere gemeinsame Schreibweisen für „Graviszeichen“ sind „Graviszeichen“ und „zurück tick“.
Antworten:
Dies ist eine Funktion, die als Vorlagenliterale bezeichnet wird .
Sie wurden in früheren Ausgaben der ECMAScript 2015-Spezifikation als "Vorlagenzeichenfolgen" bezeichnet.
Vorlagenliterale werden von Firefox 34, Chrome 41 und Edge 12 und höher unterstützt, nicht jedoch von Internet Explorer.
Vorlagenliterale können verwendet werden, um mehrzeilige Zeichenfolgen darzustellen, und können "Interpolation" verwenden, um Variablen einzufügen:
Ausgabe:
Was noch wichtiger ist, sie können nicht nur einen Variablennamen, sondern einen beliebigen JavaScript-Ausdruck enthalten:
quelle
["a", "b"].join(""); // both string elements written in new lines
. Abgesehen davon könnte man einen "Transpiler" wie Babel verwenden , um ES6 + in ES5 umzuwandelnalert`1`
.ECMAScript 6 bietet einen neuen Typ von Zeichenfolgenliteral, bei dem der Backtick als Trennzeichen verwendet wird. Mit diesen Literalen können grundlegende Zeichenfolgeninterpolationsausdrücke eingebettet werden, die dann automatisch analysiert und ausgewertet werden.
Wie Sie sehen können, haben wir
`
eine Reihe von Zeichen verwendet, die als Zeichenfolgenliteral interpretiert${..}
werden. Alle Ausdrücke des Formulars werden jedoch sofort analysiert und inline ausgewertet.Ein wirklich schöner Vorteil interpolierter String-Literale ist, dass sie sich über mehrere Zeilen verteilen dürfen:
Interpolierte Ausdrücke
Jeder gültige Ausdruck darf
${..}
in einem interpolierten Zeichenfolgenliteral enthalten sein, einschließlich Funktionsaufrufen, Inline-Funktionsausdrucksaufrufen und sogar anderen interpolierten Zeichenfolgenliteralen!Hier war das innere
`${who}s`
interpolierte String-Literal für uns ein wenig angenehmer, wenn wir diewho
Variable mit dem"s"
String kombinierten , im Gegensatz zuwho + "s"
. Um eine Notiz zu behalten, wird ein interpoliertes Zeichenfolgenliteral nur lexikalisch dort angezeigt, wo es angezeigt wird, und in keiner Weise dynamisch:Die Verwendung des Vorlagenliteral für den HTML-Code ist definitiv besser lesbar, da der Ärger verringert wird.
Der einfache alte Weg:
Mit ECMAScript 6:
Verschlagwortet mit Vorlagenliterale
Wir können auch eine Vorlagenzeichenfolge markieren. Wenn eine Vorlagenzeichenfolge markiert wird, werden die Literale und Ersetzungen an die Funktion übergeben, die den resultierenden Wert zurückgibt.
Wir können hier den Spread-Operator verwenden, um mehrere Werte zu übergeben. Das erste Argument - wir haben es Strings genannt - ist ein Array aller einfachen Strings (das Zeug zwischen interpolierten Ausdrücken).
Wir sammeln dann alle nachfolgenden Argumente in ein Array mit Namen Werte bis unter Verwendung der
... gather/rest operator
, obwohl man kann natürlich haben sie als einzelne benannte Parameter links ab und folgen den Saiten Parameter wie wir oben haben (value1
,value2
usw.).Die in unserem Wertearray gesammelten Argumente sind die Ergebnisse der bereits ausgewerteten Interpolationsausdrücke, die im Zeichenfolgenliteral gefunden wurden. Ein mit Tags versehenes String-Literal ähnelt einem Verarbeitungsschritt, nachdem die Interpolationen ausgewertet wurden, jedoch bevor der endgültige String-Wert kompiliert wurde, sodass Sie mehr Kontrolle über das Generieren des Strings aus dem Literal haben. Schauen wir uns ein Beispiel für die Erstellung wiederverwendbarer Vorlagen an.
Rohe Saiten
Unsere Tag-Funktionen erhalten ein erstes Argument, das wir als Strings bezeichnet haben. Dabei handelt es sich um ein Array. Es sind jedoch noch einige weitere Daten enthalten: die unverarbeiteten Rohversionen aller Zeichenfolgen. Sie können mit der
.raw
Eigenschaft wie folgt auf diese Rohzeichenfolgenwerte zugreifen :Wie Sie sehen können,
\n
behält die Rohversion der Zeichenfolge die maskierte Sequenz bei, während die verarbeitete Version der Zeichenfolge sie wie eine echte neue Zeile behandelt. ECMAScript 6 verfügt über eine integrierte Funktion, die als String-Literal-Tag verwendet werden kann :String.raw(..)
. Es werden einfach die Rohversionen der Zeichenfolgen durchlaufen:quelle
myTaggedLiteral`test ${someText} ${2 + 3}`;
sollten sein//["test ", " "]
(dh keine abgeschnittenen Zeichenfolgen).Backticks (
`
) werden verwendet, um Vorlagenliterale zu definieren. Vorlagenliterale sind eine neue Funktion in ECMAScript 6, um die Arbeit mit Zeichenfolgen zu vereinfachen.Eigenschaften:
Hinweis: Wir können problemlos einfache Anführungszeichen (
'
) und doppelte Anführungszeichen ("
) in den Backticks (`
) verwenden.Beispiel:
Um die Variablen oder den Ausdruck zu interpolieren, können wir dafür die
${expression}
Notation verwenden.Mehrzeilige Zeichenfolgen bedeuten, dass Sie sie nicht mehr
\n
für neue Zeilen verwenden müssen.Beispiel:
Ausgabe:
quelle
Backticks schließen Vorlagenliterale ein, die früher als Vorlagenzeichenfolgen bezeichnet wurden. Vorlagenliterale sind Zeichenfolgenliterale, die eingebettete Ausdrücke und Zeichenfolgeninterpolationsfunktionen ermöglichen.
Vorlagenliterale haben in Platzhalter eingebettete Ausdrücke, die durch das Dollarzeichen und geschweifte Klammern um einen Ausdruck gekennzeichnet sind, d
${expression}
. H. Der Platzhalter / die Ausdrücke werden an eine Funktion übergeben. Die Standardfunktion verkettet nur die Zeichenfolge.Um einem Backtick zu entkommen, setzen Sie einen Backslash davor:
Verwenden Sie Backticks, um mehrzeilige Zeichenfolgen einfacher zu schreiben:
oder
Vanille JavaScript:
oder
Escape-Sequenzen:
\u
, die beispielsweise von gestartet wurden\u00A9
\u{}
beispielsweise durch angezeigt\u{2F804}
\x
, die beispielsweise von gestartet wurden\xA9
\
und (a) Ziffer (n) beginnen\251
quelle
Zusammenfassung:
Backticks in JavaScript sind eine Funktion, die in ECMAScript 6 // ECMAScript 2015 eingeführt wurde, um einfache dynamische Zeichenfolgen zu erstellen. Diese ECMAScript 6-Funktion wird auch als Vorlagenzeichenfolgenliteral bezeichnet . Es bietet im Vergleich zu normalen Saiten folgende Vorteile:
''
oder deklariert""
) dürfen keine Zeilenumbrüche aufweisen.${myVariable}
Syntax können wir problemlos Variablenwerte in den String interpolieren .Beispiel:
Browser-Kompatibilität:
Template-String-Literal wird von allen großen Browser-Anbietern (außer Internet Explorer) nativ unterstützt. Die Verwendung in Ihrem Produktionscode ist also ziemlich sicher. Eine detailliertere Liste der Browserkompatibilitäten finden Sie hier .
quelle
Neben der String-Interpolation können Sie eine Funktion auch mit Back-Tick aufrufen.
Überprüfen Sie die gestaltete Komponente . Sie benutzen es stark.
quelle
Der gute Teil ist, dass wir grundlegende Mathematik direkt machen können:
Es wurde wirklich nützlich in einer Fabrikfunktion:
quelle