Cadenas JS "+" frente al método concat [duplicado]

Resuelto Artemis asked hace 11 años • 5 respuestas

Tengo algo de experiencia con Java y sé que la concatenación de cadenas con el operador "+" produce un nuevo objeto.

Me gustaría saber cómo hacerlo en JS de la mejor manera, ¿cuál es la mejor práctica para ello?

Artemis avatar Apr 21 '13 02:04 Artemis
Aceptado

MDN tiene lo siguiente que decir sobre string.concat():

Se recomienda encarecidamente utilizar los operadores de concatenación de cadenas (+, +=) en lugar de este método por motivos de rendimiento.

Véase también el enlace de @Bergi.

laktak avatar Apr 20 '2013 19:04 laktak

En JS, la concatenación "+" funciona creando un nuevo Stringobjeto.

Por ejemplo, con...

var s = "Hello";

...tenemos un objeto s .

Próximo:

s = s + " World";

Ahora, s es un objeto nuevo.

Segundo método: String.prototype.concat

Ozerich avatar Apr 20 '2013 19:04 Ozerich

Hubo un tiempo en el que agregar cadenas a una matriz y finalizar la cadena usando joinera el mejor y más rápido método. Hoy en día, los navegadores tienen rutinas de cadenas altamente optimizadas y se recomienda que los métodos +y +=sean los más rápidos/mejores.

Xotic750 avatar Apr 20 '2013 19:04 Xotic750
  • No podemos concatenar una variable de cadena con una variable entera usando concat()la función porque esta función solo se aplica a una cadena, no a un número entero. pero podemos concatenar una cadena a un número (entero) usando el operador +.
  • Como sabemos, las funciones son bastante más lentas que los operadores. Las funciones necesitan pasar valores a las funciones predefinidas y necesitan recopilar los resultados de las funciones. lo cual es más lento que realizar operaciones usando operadores porque los operadores realizan operaciones en línea, pero las funciones se usan para saltar a las ubicaciones de memoria apropiadas... Entonces, como se mencionó en respuestas anteriores, la otra diferencia es obviamente la velocidad de operación.

Mostrar fragmento de código

RevanthKrishnaKumar V. avatar Jun 22 '2015 11:06 RevanthKrishnaKumar V.