Tout ensemble de caractères (lettres, chiffres, symboles, etc.) entre un ensemble de guillemets doubles ("
), de guillemets simples ('
) ou de barres obliques inverses (`) est une primitive de chaîne. Vous avez déjà vu quelques exemples de chaînes dans ce cours: les instances de console.log
dans le module précédent contenaient des primitives de chaîne.
console.log( "Hello, World." );
> Hello, World.
"Hello, World."
est une primitive de chaîne. Vous obtenez le même résultat avec des guillemets simples ou des crochets arrière:
console.log( 'Hello, World.' );
> Hello, World.
console.log(`Hello, World.`);
> Hello, World.
Une série de caractères entre guillemets est appelée chaîne littérale. Les guillemets doubles et simples se comportent de la même manière, et l'un peut contenir l'autre en tant que caractère dans la chaîne elle-même:
console.log( "I'm a string." );
> I'm a string.
console.log( '"A string," I said.' );
> "A string," I said.
Une instance du même caractère de fermeture dans la chaîne "ferme" la chaîne, ce qui entraîne probablement des erreurs:
console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list
Pour éviter cela, échappez le caractère à l'aide d'une barre oblique inverse (\
):
console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.
Objet chaîne
Lorsqu'il est appelé en tant que fonction, l'objet String
force une valeur spécifiée à une chaîne littérale.
let myString = String( 10 );
myString
> "10"
typeof myString
> string
Comme indiqué dans la section Héritage par prototypage, vous devrez rarement utiliser l'objet String
comme constructeur. Il crée un objet de chaîne contenant la valeur spécifiée, ainsi que les méthodes et les propriétés déjà fournies par l'objet String
, au lieu d'une chaîne littérale.
let stringObj = new String( "My new string." );
typeof stringObj
> object
stringObj
> String { "My new string." }
Concaténation
Lorsqu'il est utilisé dans le contexte de chaînes plutôt que de nombres, un seul signe plus (+
) agit comme un opérateur de concaténation, combinant plusieurs valeurs de chaîne en une seule chaîne:
console.log( "My" + " string." );
> My string.
Littéraux de chaîne et littéraux de modèle
Les guillemets simples, les guillemets doubles et les guillemets obliques peuvent être utilisés de manière interchangeable pour créer des primitives de chaîne. Toutefois, vous pouvez également utiliser des guillemets inversés pour spécifier des chaînes littérales de modèle (parfois appelées "chaînes de modèle"). Contrairement aux chaînes littérales créées par des guillemets simples ou doubles, les chaînes littérales de modèle permettent d'utiliser des chaînes multilignes et l'interpolation de chaînes.
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.
Les littéraux de modèle peuvent contenir des expressions d'espace réservé marquées par un signe dollar et des accolades (${}
). Ces espaces réservés sont "interprétés" par défaut, ce qui signifie que le résultat de l'expression remplace l'espace réservé dans la chaîne finale.
console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.
Vous pouvez transmettre une chaîne littérale de modèle à une fonction personnalisée pour créer un modèle tagué, un appel de fonction qui utilise une seule chaîne littérale de modèle comme ensemble d'arguments et permet à ses espaces réservés d'être renseignés en fonction de la logique définie par l'auteur.
Le premier argument d'une fonction de balise contient un tableau de valeurs de chaîne, et les autres arguments définissent les espaces réservés. Cet ensemble de valeurs de chaîne est créé en "divisant" la valeur littérale du modèle à chaque espace réservé qu'il contient. Le premier élément du tableau contient tous les caractères jusqu'au premier espace réservé, le deuxième élément contient tous les caractères entre le premier et le deuxième espace réservé, et ainsi de suite. Chaque espace réservé est transmis à la fonction de balise en tant que valeur autonome avec un espace réservé associé.
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."
Vérifier vos connaissances
Quel caractère permet d'échapper des caractères ?
∖
)"
)/
)Quel caractère est utilisé pour la concaténation ?
+
&
.