Соединение строк в JavaScript — это тема, которую к концу статьи можно разделить на две категории: интерполяция строк и обычная конкатенация строк.

Что касается интерполяции строк, оказывается, литералы шаблонов фактически выводят то, что вы вводите, включая разрывы строк и пробелы; таким образом, мы можем использовать интерполяцию строк, чтобы разбить строки по своему желанию.¹

Пробел в литералах шаблона

Таким образом, литералы шаблонов будут выводиться так, как они появляются, с пробелами и всем остальным! Из-за этого помните о пустых местах или линиях. Невидимые разрывы строк и пробелы преобразуются в читаемый текст с помощью литералов шаблонов.

const blankSpace = `
first
    second
  third
`;
[line break]
first
....second
..third
[line break]
[line break]²

Когда код токенизируется, существует разница между разрывами строк в литералах шаблонов путем простого разделения строки и разрывом строки \n при использовании конкатенации строк. Использование литерального формата шаблона позволяет нам уместить все в одной строке.¹

Мы можем вызывать литералы шаблонов для деструктурирования/распаковки массивов, а также использовать …args вместо Array.from(arguments).⁴

const indexAndValue = (arr) => {
    return arr.map((v, i) => {
        return {i, v};
    });
};
let arr = indexAndValue(['arg1', 'arg2', 'arg3'])
const foo = (arg1, ...args) => {
    return `the first arg is ${arg1}
  with remaining args: ${args}`;
}
console.log(foo(arr[0]['v']));

первый аргумент — arg1
с остальными аргументами:

const foo = (arg1, ...args) => {
    return `the first arg is ${arg1} \ 
  with remaining args: ${args}`;
};
console.log(foo(arr[0]['v'],
    arr[1]['v'],
    arr[2]['v']));

первый аргумент - arg1 с остальными аргументами: arg2,arg3

Первый журнал консоли превращает литералы шаблона, содержащие неявный разрыв строки, в настоящий разрыв строки, а второй журнал консоли экранирует символ разрыва строки. Для переосмысления вы можете попробовать \n, что создаст новую строку! \t создаст горизонтальную вкладку.³

Если в строках есть комментарии в стиле JavaScript, и вы хотите, чтобы текст без литералов шаблона переносил оператор return между строками без лишних пробелов и комментариев, затем возьмите разрывы строк, выполните итерацию и накапливайте по каждому подмассиву, пока не начнется комментарий, затем остановитесь и добавьте разрыв строки \n, а затем сосредоточьтесь на следующей строке ввода.

const saySomething = () => {
     return 'My first really long statement //add some comments here \n ' +
         'will hopefully output in one line //another comment \n ' +
         'when all is said and done.';
 };
console.log(saySomething());
function uncomment(input) {
     let arrInput = input.split('\n');
     for (let i = 0; i < arrInput.length; i++) {
       arrInput[i] = arrInput[i].trim().split('');
     } // each subarray is a new line
     let result = '';
     for (let subarray of arrInput) {
        for (let i = 0; i < subarray.length; i++) {
         if (subarray[i] === '/' && subarray[i+1] === '/') {
           break;
         } else {
           result += subarray[i];
         }
       }
       result += '\n';
     } // remove the last line break with substring
     return result.substring(0, result.length - 1);
 };
console.log(uncomment(saySomething()));

Для дальнейшего ознакомления см. генерация многострочных строк ​​с помощью шаблонных литералов!

[1]: Идея, по словам Алекса Митровича, состоит в том, чтобы иметь возможность обернуть ввод в длинный оператор возврата. Токенизация — это создание связи между пустым пространством и его проявлением, и это больше, чем просто разрыв строки \n при использовании конкатенации строк.

[2]: Саманта Минг. Как создать многострочную строку с шаблонными литералами в JavaScript
https://medium.com/dailyjs/how-to-create-multi-line-string-with-template- литералы-в-javascript-a3a140d0b0f6

[3]: FreeFormatter.com. Бесплатный онлайн-инструмент Escape/Unescape для JavaScript (JS)
https://www.freeformatter.com/javascript-escape.html

[4]: Джастин Кристенсен вводит деструктурирование/распаковку для массивов, а также использование …args вместо Array.from(arguments), и теперь пришло время вернуть эти args с литералами шаблона.