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?
∖
)"
)/
)Quale carattere viene utilizzato per la concatenazione?
&
+
.