JS Native no proporciona funciones convenientes de formatillas, y se ve caótica y difícil de leer por empalme de personajes, y es muy inconveniente de usar. Personalmente siento que la sintaxis proporcionada en C# es más útil, como:
String.Format ("Bienvenido a aprender '{0}', '{0}' es increíble, lo harás {1}!", "JavaScript", "amor");Este método de reemplazo secuencial es relativamente claro, y al reemplazar el mismo contenido, puede guardar la situación de pasar parámetros duplicados. La siguiente es la versión de implementación simple de JS (sin pruebas estrictas):
(function (exports) {exports.format = function () {var args = array.protype.slice.call (argumentos), sourCestr = args.shift (); function execrepLace (text, reemplazo, index) {return text.replace (new REGEXP ("// {" "+Índice+" //} ", 'g'), reemplazo);} args.reduce (execReplace, SourCestr);}}) (window.utils = window.utils || {}); console.log (utils.format ("Bienvenido a aprender '{0}', '{0}' es increíble, usted {1} it!", "JavaScript", "amor"));La clave es esta oración:
args.reduce (ExecReplace, SourCestr);
Aquí, se utiliza la función de reducción de Array. Reducir y reducir la luz son funciones recientemente agregadas en ES5. Los parámetros de esta función son reducidos (devolución de llamada, InitialValue). La devolución de llamada recibe 4 parámetros:
Valor anterior:
Al atravesar la primera entrada de la función de devolución de llamada, si se especifica InitialValue, InitialValue se usará directamente, si no se especifica el primer elemento de la matriz, se utilizará el primer elemento de la matriz.
El valor de la segunda y posterior recorrido es el resultado del recorrido anterior.
El resultado devuelto por el último recorrido se utilizará como el valor de retorno de la función Reducir.
CurrentValue: el elemento actual que atravesó
Índice: el índice del elemento actual en la matriz
Matriz: matriz original
En cada ejecución en ExecReplace, el resultado después del reemplazo anterior se usa como la cadena de reemplazo original, el índice del elemento actual se usa como el contenido que se reemplazará e itera a su vez para finalmente completar el contenido de reemplazo.
Nota: Reduceright es básicamente lo mismo que la función de reducir, excepto que su orden de transversión es de derecha a izquierda