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`;
Produire la sortie comme :
console.log`1` VM12380:2 ["1", raw: Array[1]]
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 :
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 :
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"]));
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!