JS Native ne fournit pas de fonctions de format pratiques, et elle semble chaotique et difficile à lire par l'épissage de personnage, et il est très gênant à utiliser. Je pense personnellement que la syntaxe fournie en C # est plus utile, comme:
String.format ("Bienvenue à apprendre '{0}', '{0}' est génial, vous allez {1}!", "JavaScript", "Love");Cette méthode de remplacement séquentielle est relativement claire et lors du remplacement du même contenu, vous pouvez enregistrer la situation de passage des paramètres en double. Ce qui suit est la version d'implémentation simple de JS (sans test stricte):
(fonction (exports) {export.format = function () {var args = array.prototype.slice.call (arguments), sourcestr = args.shift (); fonction execreplace (text, remplacement, index) {return text.replace (new regexp ("// {" + index + "//}", 'g'), replacement);} retour Args.reduce (execreplace, Sourcestr);}}) (window.utils = window.utils || {}); console.log (utils.format ("Bienvenue pour apprendre '{0}', '{0}' est génial, vous {1} it!", "Javascript", "Love"));La clé est cette phrase:
Args.reduce (execreplace, Sourcestr);
Ici, la fonction de réduction de Array est utilisée. La réduction et la réducteur sont des fonctions nouvellement ajoutées dans ES5. Les paramètres de cette fonction sont réduits (rappel, initialValue). Le rappel reçoit 4 paramètres:
Précéaire VALUE:
Lorsque vous traversez la première entrée de la fonction de rappel, si InitialValue est spécifié, InitialValue sera utilisé directement, si aucun premier élément du tableau n'est spécifié, le premier élément du tableau sera utilisé.
La valeur de la deuxième traversée et des traversées suivantes est le résultat de la traversée précédente.
Le résultat renvoyé par la dernière traversée sera utilisé comme valeur de retour de la fonction de réduction.
CurrentValue: l'élément actuel qu'il a traversé
Index: l'index de l'élément actuel dans le tableau
Tableau: tableau d'origine
Dans chaque exécution dans Execreplace, le résultat après le remplacement précédent est utilisé comme chaîne de remplacement d'origine, l'index de l'élément actuel est utilisé comme contenu à remplacer et itère à son tour pour finalement compléter le contenu de remplacement.
Remarque: ReduceRight est fondamentalement le même que la fonction de réduction, sauf que son ordre de traversée est de droite à gauche