2015-09-14 3 views
5

Мы, к сожалению, делаем много динамического дизайна веб-страниц, создавая строки HTML с использованием JavaScript и используя document.write для вывода данных. Я наткнулся на некоторый код, что один из моих коллег написал, что выглядит следующим образом:String Concatenation with String()

var myString = String() + "this is my string" + 
      "and I am doing a lot of string concatenation" + 
      "doing this the worst way possible" 

Эти линии идут дальше и дальше, иногда сотни строк жестко закодированы HTML (с встроенных стилей и недостающих конечных тегов). Части, которые мне интересны, это String(). Я никогда не видел этого раньше, и я писал JavaScript в течение длительного времени. Я спросил своего коллегу, что это такое, и он сказал, что «это улучшает производительность конкатенации строк и, перейдя во время отладки, вы не будете наступать на каждую строку, а скорее прямо до конца».

Теперь я обычно принимаю эти вещи с солью, но мне было любопытно ... поэтому я проверил это. Chrome, по крайней мере, всегда делает шаг к следующему утверждению независимо от открытия String() или нет. Поэтому я знаю, что это, по крайней мере, неверно.

A. A. есть? Это не как конструктор (как бы), и когда я ввожу String() в консоль, я возвращаю пустую строку "". И Б. Есть ли какая-то правда в его заявлении, что это улучшает производительность? И если да, то почему?

+3

Это может повлиять на конкретный отладчик, отличный от того, который находится в Chrome. Помните, что это только один браузер. При этом у него возникли проблемы с конкатенацией строк, требующих отладчика, я думаю, что с кодом больше проблем, чем с использованием 'String()' вместо '' ''. –

+0

Ну, они содержат тонны переменных, поэтому они перешагивают, проверяя переменные как конкатенированные, так и такие. Я знаю, что это может быть сделано намного лучше, но поскольку мы не делаем этого иначе, меня интересует это, так как это – pinkfloydx33

+1

По крайней мере, для chrome, firefox и IE11 производительность ужасная: [скрипка] (http : //jsfiddle.net/wmtc5z4f/) – Andreas

ответ

2

От String - JavaScript | MDN:

String глобальный объект является конструктором для строк или последовательность символов.

Что касается того, используя его как в вашем примере улучшает производительность, то, вероятно, две вещи, которые нужно иметь в виду:

  • ли это повышает производительность, вероятно, зависит от браузера или другой среде выполнения JavaScript.
  • Возможно, это не улучшает производительность, чтобы гарантировать его использование.
+1

Спасибо. Я никогда не видел, чтобы глобальный строковый объект использовался так. И googling для 'String()' ничего не показал, поскольку я бы предположил, что это так распространено, и я ошибся, чтобы страница MDN отличалась от того, что я искал – pinkfloydx33

+0

@ pinkfloydx33 Да, это странное использование - и, как правило, такие вещи подозрительны , –