В JavaScript у меня есть цикл, который имеет много итераций, и на каждой итерации я создаю огромную строку со многими +=
операторами. Есть ли более эффективный способ создания строки? Я думал о создании динамического массива, где я продолжаю добавлять строки к нему, а затем делаю соединение. Может кто-нибудь объяснить и привести пример самого быстрого способа сделать это?
163
Ответы:
На основании тестов в JSPerf кажется, что использование
+=
- самый быстрый метод, хотя не обязательно в каждом браузере.Для построения строк в DOM, кажется, лучше сначала конкатенировать строку, а затем добавить в DOM, а не итеративно добавлять ее в DOM. Вы должны сравнить свой собственный случай, хотя.
(Спасибо @zAlbee за исправление)
источник
+=
выполнением соединения с массивом.66%
(для IE9) происходит быстрее, чем создание строки и добавление этой строки в DOM.У меня нет комментариев относительно самой конкатенации, но я хотел бы отметить, что предложение @Jakub Hampl:
неправильно, потому что он основан на некорректном тесте. Этот тест никогда не добавляется в DOM.
Этот фиксированный тест показывает, что создание строки сразу перед ее рендерингом намного, НАМНОГО быстрее. Это даже не конкурс.
(Извините, это отдельный ответ, но у меня недостаточно представителей, чтобы комментировать ответы.)
источник
Прошло три года с тех пор, как на этот вопрос был дан ответ, но я все равно предоставлю свой ответ :)
На самом деле принятый ответ не совсем правильный. Тест Якуба использует жестко закодированную строку, которая позволяет движку JS оптимизировать выполнение кода (Google V8 действительно хорош в этом!). Но как только вы используете совершенно случайные строки ( здесь - JSPerf ), конкатенация строк будет на втором месте.
источник
Вы также можете сделать строку concat с литералами шаблона . Я обновил тесты JSPerf других авторов, чтобы включить его.
источник