Maison  >  Article  >  interface Web  >  Comment différer l’évaluation littérale du modèle ES6 ?

Comment différer l’évaluation littérale du modèle ES6 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 00:30:02769parcourir

How to Defer ES6 Template Literal Evaluation?

Évaluation différée pour les littéraux de modèles ES6

Dans ES6, les littéraux de modèles permettent l'interpolation de chaînes avec des valeurs dynamiques. Cependant, nous pouvons parfois devoir différer l'évaluation du modèle littéral à plus tard pour incorporer des éléments dynamiques.

Question : Comment pouvons-nous écrire du code pour différer l'évaluation d'un modèle ES6 littéral jusqu'à ce que nous ayons créé dynamiquement les éléments utilisés pour l'interpolation ?

Réponse : Il existe plusieurs approches pour y parvenir ceci :

  1. Utilisation de chaînes simples :

    Utilisez des littéraux de chaîne simples au lieu de chaînes de modèles pour éviter une évaluation immédiate. Les valeurs d'espace réservé d'interpolation peuvent être formatées à l'aide d'une méthode de prototype personnalisée comme celle-ci :

    String.prototype.format = function() {
        var args = arguments;
        return this.replace(/$\{p(\d)\}/g, function(match, id) {
            return args[id];
        });
    };
    console.log("Hello, ${p0}. This is a ${p1}".format("world", "test"));
  2. Utilisation de littéraux de modèle balisés :

    Littéraux de modèle balisés proposer une méthode alternative. Cependant, il est important de noter que les substitutions sont toujours évaluées sans permettre l'interpolation d'identifiants comme "p0".

    function formatter(literals, ...substitutions) {
        return {
            format: function() {
                var out = [];
                for(var i=0, k=0; i < literals.length; i++) {
                    out[k++] = literals[i];
                    out[k++] = arguments[substitutions[i]];
                }
                out[k] = literals[i];
                return out.join("");
            }
        };
    }
    console.log(formatter`Hello, <pre class="brush:php;toolbar:false">console.log(`Hello, ${"world"}. This is a ${"test"}`);
    . This is a `.format("world", "test"));
  3. Éviter le report :

    Pensez à utiliser les chaînes de modèles comme prévu, sans aucune fonction de formatage ni report. Les chaînes de modèles offrent un moyen concis et efficace d'interpoler des valeurs dynamiques sans complexité supplémentaire.

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!

Déclaration:
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