De acuerdo con este MDN , parece que += es preferible a concat() por problemas de rendimiento. Así que uso el siguiente código de muestra para probar.
var str = ""; var startTime = performance.now() for(var i=0; i<10000000; i++) { str = str.concat(i); } var endTime = performance.now() console.log(`concat took ${endTime - startTime} ms`) str = ""; startTime = performance.now() for(var i=0; i<10000000; i++) { str += i; } endTime = performance.now() console.log(`+= took ${endTime - startTime} ms`)Pero no veo una diferencia significativa hasta que aumente el bucle a 10.000.000 de veces. Aquí hay algunos resultados que obtengo cuando ejecuto Chrome.
concat took 3067.600000023842 ms += took 2799 ms concat took 2751.5 ms += took 2280.199999988079 ms concat took 2865.699999988079 ms += took 1857.5999999642372 ms concat took 2909.7000000476837 ms += took 2183.599999964237 ms Si compara += y StringBuilder.append() con Java, observará una gran diferencia (p. ej., 3 ms frente a 3000 ms), incluso probando en un ciclo de 10000 veces.
Entonces, ¿en qué caso puedo observar una diferencia significativa entre += y concat() en JavaScript?