Backticks et invocation de fonctions en JavaScript
Lorsque vous utilisez des backticks () pour envelopper un littéral de chaîne en JavaScript, vous pouvez rencontrer un comportement inattendu tel que un modèle balisé étant invoqué. Dans ce cas, console.log1 a abouti à la sortie "console.log1`nVM12380:2 ["1", raw: Array[1]]".
Modèles balisés dans ES6
L'explication réside dans le concept de modèles balisés, introduit dans ES6. Les modèles balisés vous permettent de baliser une chaîne de modèle avec une fonction. Lorsque la chaîne est utilisée avec la fonction, la fonction reçoit les valeurs analysées de la chaîne modèle et les valeurs de la chaîne.
Fonctionner comme une balise
Dans le exemple fourni, console.log est utilisé comme fonction de balise. Il est effectivement appelé avec les valeurs de chaîne analysées et la valeur de chaîne littérale sous forme de tableau. La fonction peut ensuite manipuler ces valeurs et renvoyer une nouvelle chaîne ou les transmettre pour un traitement ultérieur.
Tableau retourné
La fonction console.log n'effectue aucune opération particulière traitement sur les valeurs, il renvoie donc le tableau contenant la valeur de chaîne littérale. Ce tableau est ensuite imprimé par console.log, ce qui donne le résultat que vous avez observé.
Transpilation et littéraux de modèles
Lors de l'utilisation de fonctionnalités JavaScript modernes telles que des littéraux de modèles avec des anciens Des navigateurs, Babel ou des transpilateurs similaires sont utilisés pour convertir le code en ES5, qui est pris en charge par ces navigateurs. Le code transpilé pour l'exemple serait :
console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
Ce code transpilé crée un tableau contenant la chaîne littérale "1" et le transmet à console.log comme argument.
Par conséquent, la notation backtick 1 appelle console.log en tant que fonction de modèle balisée, qui renvoie un tableau qui est ensuite imprimé. La propriété brute dans le tableau renvoyé contient la valeur de chaîne littérale.
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!