Stringa

Qualsiasi insieme di caratteri (lettere, numeri, simboli e così via) tra un insieme di Virgolette doppie ("), virgolette singole (') o apici inversi (`) è una stringa primitiva. Hai già visto alcuni esempi di stringhe questo corso: le istanze di console.log nel modulo precedente contenevano le primitive di tipo stringa.

console.log( "Hello, World." );
> Hello, World.

"Hello, World." è una stringa primitiva. Si ottiene lo stesso risultato con virgolette o apici inversi:

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

Una serie di caratteri racchiusi tra virgolette è chiamata stringa letterale. Le virgolette doppie e singole si comportano nello stesso modo e una può contenere l'altra come carattere nella stringa stessa:

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

Un'istanza dello stesso carattere di chiusura all'interno della stringa "chiude" la stringa, causando probabilmente errori:

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

Per evitare questo problema, inserisci una barra inversa (/) prima del carattere:

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

Oggetto stringa

Quando viene chiamato come funzione, l'oggetto String converte un valore specificato in un stringa letterale.

let myString = String( 10 );

myString
> "10"

typeof myString
> string

Come spiegato in dettaglio nell'ereditarietà prototipale, raramente dovrai usare l'oggetto String come costruttore. Crea un oggetto stringa contenente il valore specificato, insieme ai metodi e alle proprietà già offerti dall'oggetto String, anziché una stringa letterale.

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

Concatenazione

Se utilizzato nel contesto di stringhe anziché di numeri, un singolo segno più (+) agisce come operatore di concatenazione, combinando più valori di stringa in un'unica stringa:

console.log( "My" + " string." );
> My string.

Valori letterali stringa e valori letterali modello

Le virgolette singole, le virgolette doppie e i backtick possono essere utilizzati in modo intercambiabile per creare primitive di stringa. Tuttavia, puoi anche utilizzare apici inversi per specificare valori letterali modello (a volte chiamati "stringhe modello"). A differenza del i valori letterali stringa creati da virgolette singole o doppie; i valori letterali modello consentono per stringhe multilinea e interpolazione di stringhe.

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.

I valori letterali del modello possono contenere espressioni segnaposto contrassegnate dal simbolo del dollaro e parentesi graffe (${}). Questi segnaposto sono "interpolati" per impostazione predefinita, vale a dire che il risultato dell'espressione sostituisce il segnaposto nella stringa.

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

Un valore letterale di modello può essere passato a una funzione personalizzata per creare un modello con tag, una chiamata di funzione che utilizza un singolo modello letterale come insieme di argomenti e consente ai relativi segnaposto di essere compilati in base logica definita dall'autore.

Il primo argomento di una funzione tag contiene un array di valori di stringa e il gli argomenti rimanenti definiscono i segnaposto. Questo array di valori di stringa è creato tramite la "suddivisione" il valore letterale del modello in ogni segnaposto contenuto. La il primo elemento dell'array contiene qualsiasi carattere fino al primo segnaposto, il secondo elemento contiene tutti i caratteri compresi tra il primo e il secondo segnaposto e così via. Ogni segnaposto viene passato alla funzione tag come un valore autonomo con un segnaposto associato.

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."

Verifica le tue conoscenze

Quale carattere viene utilizzato per l'interpretazione letterale?

Una barra rovesciata ()
Una virgoletta doppia (")
Una barra (/)

Quale carattere viene utilizzato per la concatenazione?

&
+
.