Ciąg znaków

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?

Ukośnik odwrotny ()
Podwójny cudzysłów (")
Ukośnik (/)

Który znak jest używany do łączenia?

+
&
.