Самый эффективный способ объединения строк в JavaScript?

В JavaScript у меня есть цикл, который имеет много итераций, и на каждой итерации я создаю огромную строку со многими операторами +=. Есть ли более эффективный способ создания строки? Я думал о создании динамического массива, где я продолжаю добавлять строки к нему, а затем делаю соединение. Может кто-нибудь объяснить и привести пример самого быстрого способа сделать это?

Ответ 1

Похоже, что на основе JSPerf использование += является самым быстрым методом, хотя и не обязательно в каждом браузере.

Для построения строк в DOM, кажется лучше, чтобы сначала соединить строку, а затем добавить в DOM, а затем итеративно добавить это в дом. Вы должны проверить свой собственный случай.

(Спасибо @zAlbee за исправление)

Ответ 2

У меня нет комментариев о самой конкатенации, но я хотел бы отметить, что предложение @Jakub Hampl:

Для построения строк в DOM, в некоторых случаях было бы лучше итеративно добавить DOM, а затем добавить огромную строку сразу.

неверно, потому что он основан на ошибочном тесте. Этот тест никогда не добавляется в DOM.

Этот фиксированный тест показывает, что создание строки сразу перед рендерингом намного, МНОГО быстрее. Это даже не конкурс.

(Извините, это отдельный ответ, но пока у меня недостаточно ответов, чтобы прокомментировать ответы.)

Ответ 3

Прошло три года с момента ответа на этот вопрос, но я все равно дам свой ответ:)

Собственно, принятый ответ не совсем корректен. Тест Jakub использует жестко кодированную строку, которая позволяет JS-движку оптимизировать выполнение кода (Google V8 действительно хорош в этом!). Но как только вы используете полностью случайные строки (вот JSPerf), тогда конкатенация строк будет на втором месте.