Dowolny zestaw znaków – litery, cyfry, symbole itd. – między zestawem
podwójny cudzysłów ("
), pojedynczy cudzysłów ('
) lub grawis
(`) jest podstawowym ciągiem znaków. Znasz już kilka przykładów ciągów tekstowych w
w tym kursie: wystąpienia pola console.log
z poprzedniego modułu zawierały
podstawowe ciągi znaków.
console.log( "Hello, World." );
> Hello, World.
"Hello, World."
jest podstawowym ciągiem znaków. Taki sam wynik osiągasz, używając singla
cudzysłowy lub grawis:
console.log( 'Hello, World.' );
> Hello, World.
console.log(`Hello, World.`);
> Hello, World.
Seria znaków w cudzysłowie jest nazywana literałem ciągu. Podwójne i pojedyncze cudzysłowy działają w taki sam sposób – jeden z nich może zawierać drugi jako znak w samym ciągu:
console.log( "I'm a string." );
> I'm a string.
console.log( '"A string," I said.' );
> "A string," I said.
Wystąpienie tego samego znaku zamykającego w ciągu znaków „zamknięcie” ciąg znaków, który prawdopodobnie powoduje błędy:
console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list
Aby tego uniknąć, zmień znaczenie znaku, używając ukośnika lewego (/):
console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.
Obiekt z ciągiem znaków
Gdy jest wywoływany jako funkcja, obiekt String
zmusza określoną wartość do postaci literału ciągu znaków.
let myString = String( 10 );
myString
> "10"
typeof myString
> string
Jak opisano w sekcji Dziedziczenie prototypowe,
jeśli obiekt String
jest używany jako konstruktor rzadko, Zamiast literału ciągu znaków tworzy obiekt ciągu znaków zawierający określoną wartość oraz metody i właściwości dostępne już w obiekcie String
.
let stringObj = new String( "My new string." );
typeof stringObj
> object
stringObj
> String { "My new string." }
Łączenie
Jeśli w kontekście ciągów tekstowych zamiast liczb jest używany pojedynczy znak plus (+
),
działa jak operator łączenia, łącząc wiele wartości ciągu znaków w jedną
ciąg znaków:
console.log( "My" + " string." );
> My string.
Literały łańcuchowe i literały szablonów
Pojedyncze cudzysłowy, podwójne i grawisowe mogą być stosowane zamiennie dla: w tworzeniu podstawowych ciągów znaków. Możesz też użyć cudzysłowów, aby określić literaly szablonu (czasami nazywane „ciągłymi ciągami znaków szablonu”). W przeciwieństwie do literalów ciągu znaków tworzonych za pomocą pojedynczych lub podwójnych cudzysłowów literaly szablonu umożliwiają stosowanie wielowierszowych ciągów znaków i interpolację ciągu znaków.
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.
Literały szablonów mogą zawierać wyrażenia zastępcze oznaczone znakiem dolara
i nawiasy klamrowe (${}
). Te zmienne są „interpolowane”. domyślnie,
co oznacza, że wynik wyrażenia zastępuje zmienną w końcowym
ciągu znaków.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
Szablon literalny może zostać przekazany do funkcji niestandardowej, aby utworzyć otagowany szablon, czyli wywołanie funkcji, które używa pojedynczego szablonu literalnego jako zestawu argumentów i umożliwia wypełnianie jego symboli zastępczych na podstawie logiki zdefiniowanej przez autora.
Pierwszy argument funkcji tagu zawiera tablicę wartości ciągu znaków, a pozostałe definiują obiekty zastępcze. Ta tablica wartości ciągu znaków to utworzone przez podział literał szablonu w każdym obiekcie zastępczym, który zawiera. pierwszy element tablicy zawiera dowolne znaki do pierwszego symbolu zastępczego, drugi element zawiera wszelkie znaki między pierwszym a drugim zmienne itd. Każdy symbol zastępczy jest przekazywany do funkcji tagu jako samodzielną wartością z powiązaną zmienną.
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."
Sprawdź swoją wiedzę
Który znak służy do zmiany znaczenia znaków?
∖
)/
)"
)Który znak jest używany do łączenia?
.
+
&