Dévoiler l'énigme des backticks : appeler des fonctions en JavaScript
Dans le domaine de JavaScript, les humbles backticks (…) détiennent un pouvoir mystérieux , capable d'invoquer des fonctions de manière transparente. Pourtant, ce phénomène peut laisser perplexes même les développeurs chevronnés. Pourquoi le code console.log1` donne-t-il une sortie inattendue comme "console.log1`nVM12380:2 ["1", raw: Array[1]]" ?
La réponse réside dans le concept de Tagged Modèles, une fonctionnalité intrigante introduite dans ES-6. Les modèles balisés permettent aux développeurs de baliser les chaînes de modèles avec des fonctions, leur permettant d'effectuer des opérations sur les valeurs analysées de ces chaînes.
Dans notre exemple, les backticks (…) balisent la chaîne littérale "1" avec la console. fonction de journalisation. Comme toute autre fonction, la fonction balisée reçoit les valeurs analysées de la chaîne modèle, qui sont la chaîne elle-même et un tableau contenant sa valeur brute.
Les fonctions balisées comme console.log peuvent traiter le modèle de chaîne avant qu'il ne soit sortir. Dans ce cas, la fonction imprime simplement le tableau qu'elle reçoit, ce qui donne le résultat que nous observons.
Babel, un transpileur JavaScript populaire, transforme le code du modèle Tagged en une forme plus compatible ES-5. Dans notre cas, le code suivant est généré :
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; }; console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
La fonction _taggedTemplateLiteralLoose renvoie le modèle balisé, qui est ensuite transmis à console.log. Cela explique pourquoi le tableau ["1", raw: Array[1]] est imprimé dans la console.
Ainsi, la puissance des backticks réside dans leur capacité à faciliter les modèles balisés, un mécanisme qui permet aux fonctions de traiter et améliorer les chaînes avec lesquelles ils sont étiquetés, ouvrant ainsi un monde de possibilités dans la programmation JavaScript.
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!