Каков наилучший способ создания/конкатенации строк в JavaScript?

TL; DR


поддерживает ли JavaScript подстановку / интерполяцию?

обзор


Я работаю над проектом JS, и поскольку он становится больше, держать строки в хорошей форме становится намного сложнее. Мне интересно, какой самый простой и обычный способ создания или сборки строк в JavaScript.

мой опыт:

конкатенация строк начинает выглядеть уродливо и становится все труднее поддерживать по мере усложнения проекта.

самое важное это на данный момент-лаконичность и читаемость, подумайте о куче движущихся частей, а не только о 2-3 переменных.

также важно, что он поддерживается основными браузерами на сегодняшний день (i.e по крайней мере ES5 поддерживается).

Я знаю стенографию конкатенации JS:

var x = 'Hello';
var y = 'world';
console.log(x + ', ' + y);

и строку.функция concat

5 ответов


С ES6, вы можете использовать

ES5 и ниже:

  • использовать + оператор

    var username = 'craig';
    var joined = 'hello ' + username;
    
  • строки!--28-->concat(..)
    var username = 'craig';
    var joined = 'hello '.concat(username);
    

альтернативно, используйте Array методы:

  • join(..):

    var username = 'craig';
    var joined = ['hello', username].join(' ');
    
  • или еще более причудливый,reduce(..) в сочетании с любым из вышеперечисленных:

    var a = ['hello', 'world', 'and', 'the', 'milky', 'way'];
    var b = a.reduce(function(pre, next) {
      return pre + ' ' + next;
    });
    console.log(b); // hello world and the milky way
    

var descriptor = 'awesome';
console.log(`ES6 is ${descriptor}!`);

еще:https://developers.google.com/web/updates/2015/01/ES6-Template-Strings?hl=en


можно использовать


можно использовать Coffeescript, это сделано, чтобы сделать код javascript более кратким.. Для конкатенации строк вы можете сделать что-то вроде этого:

first_name = "Marty"
full_name = "#{first_name} McFly"
console.log full_name

может быть, вы можете начать здесь чтобы увидеть, что предлагает coffescript..


Я думаю заменить() заслуживает упоминания здесь.

в некоторых условиях метод replace может хорошо служить вам при построении строк. В частности, очевидно, когда вы вводите динамическую часть в статическую строку. Пример:

var s = 'I am {0} today!';
var result = s.replace('{0}', 'hungry');
// result: 'I am hungry today!'

заполнитель, который нужно заменить, очевидно, может быть чем угодно. Я использую "{0}", "{1}" и т. д. По привычке с C#. Он просто должен быть достаточно уникальным, чтобы не наступить в строки, где предназначенный.

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

var x = 'Hello {0}';
var y = 'World';
var result = x.replace('{0}', y);
// result: 'Hello World'. -Oh the magic of computing!

ссылка на "заменить": https://www.w3schools.com/jsreF/jsref_replace.asp