Maison > interface Web > js tutoriel > Backticks JavaScript : interpolation de chaîne ou fonction de modèle balisé ?

Backticks JavaScript : interpolation de chaîne ou fonction de modèle balisé ?

Barbara Streisand
Libérer: 2024-11-22 06:34:18
original
1060 Les gens l'ont consulté

JavaScript Backticks: String Interpolation or Tagged Template Function?

Backticks en JavaScript : appel de fonction ou marquage de chaîne ?

Lorsque vous utilisez des backticks (...) en JavaScript, vous pouvez rencontrer des comportements inattendus , comme lors de l'exécution de console.log avec un seul paramètre à l'intérieur des backticks :

console.log`1`;
Copier après la connexion

Produire la sortie comme :

console.log`1`
VM12380:2 ["1", raw: Array[1]]
Copier après la connexion

Comprendre les modèles balisés

Ce comportement découle du concept de modèles balisés introduit dans ES6. Les modèles balisés sont des fonctions qui peuvent être utilisées avec des backticks pour manipuler des littéraux de chaîne. Lorsqu'un modèle balisé est invoqué, il reçoit deux paramètres :

  • strings : un tableau de littéraux de chaîne
  • ...values : un tableau de valeurs incorporées dans les littéraux de chaîne

Invocation de fonction vs marquage

Dans le cas de console.log avec des backticks, les backticks n'appellent pas la fonction. Au lieu de cela, ils marquent la chaîne littérale « 1 » avec la fonction console.log. La fonction de modèle balisée résultante renvoie un tableau contenant la valeur transformée.

Plus précisément :

  • strings[0] contient la chaîne littérale : "1"
  • strings[ 1] n'est pas défini
  • values[0] contient la valeur intégrée : 1
  • raw contient la Littéraux de chaîne non transformés : ["1"]

Transpilation

Les navigateurs modernes transpilent le code ES6 pour le rendre compatible avec les anciennes versions de JavaScript. Dans ce cas, la fonction de modèle balisée est transpilée en un appel de fonction régulier :

var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; };

console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
Copier après la connexion

La fonction _taggedTemplateLiteralLoose renvoie un tableau qui est transmis à la fonction console.log, qui imprime le tableau.

Conclusion

Les backticks en JavaScript peuvent être utilisés à la fois pour l'interpolation de chaînes et pour le balisage modèles. Lorsqu'elle est utilisée avec une fonction de modèle balisée, la fonction reçoit les valeurs analysées des littéraux de chaîne et des valeurs intégrées, permettant la manipulation et la transformation des données avant de les afficher.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal