Струны

Любой набор символов — букв, цифр, символов и т. д. — заключенный в двойные кавычки ( " ), одинарные кавычки ( ' ) или обратные кавычки (`), является строковым примитивом. Вы уже видели Несколько примеров строк в этом курсе: экземпляры console.log в предыдущем модуле содержали строковые примитивы.

console.log( "Hello, World." );
> Hello, World.

"Hello, World." является строковым примитивом. Вы получите тот же результат с одинарными кавычками или обратными кавычками:

console.log( 'Hello, World.' );
> Hello, World.

console.log(`Hello, World.`);
> Hello, World.

Последовательность символов, заключенная в кавычки, называется строковым литералом . Двойные и одинарные кавычки ведут себя одинаково, и одна может содержать другую как символ самой строки:

console.log( "I'm a string." );
> I'm a string.

console.log( '"A string," I said.' );
> "A string," I said.

Экземпляр того же самого закрывающего символа в строке «закрывает» строку, что может привести к ошибкам:

console.log( '"I'm a string," I said.' );
> Uncaught SyntaxError: missing ) after argument list

Чтобы избежать этого, экранируйте символ, используя обратную косую черту (/):

console.log( '"I\'m a string," I said.' );
> "I'm a string," I said.

Строковый объект

При вызове как функции объект String приводит указанное значение к строковому литералу.

let myString = String( 10 );

myString
> "10"

typeof myString
> string

Как подробно описано в разделе «Наследование прототипов» , вам редко придется использовать объект String в качестве конструктора. Он создает строковый объект, содержащий указанное значение, наряду с методами и свойствами, уже предоставленными объектом String , вместо строкового литерала.

let stringObj = new String( "My new string." );

typeof stringObj
> object

stringObj
> String { "My new string." }

Конкатенация

При использовании в контексте строк вместо чисел один знак плюса ( + ) действует как оператор конкатенации, объединяя несколько строковых значений в одну строку:

console.log( "My" + " string." );
> My string.

Строковые литералы и литералы шаблонов

Одинарные, двойные кавычки и обратные кавычки можно использовать как взаимозаменяемые для создания строковых примитивов. Однако вы также можете использовать обратные кавычки для указания литералов шаблона (иногда называемых «строками шаблона»). В отличие от строковых литералов , созданных с помощью одинарных или двойных кавычек, литералы шаблонов допускают многострочные строки и интерполяцию строк.

const myString = "This
is a string.";
> Uncaught SyntaxError: "" string literal contains an unescaped line break

const myString = `This
is a string.`;

console.log( myString );

> This
is a string.

Литералы шаблонов могут содержать выражения-заполнители, отмеченные знаком доллара и фигурными скобками ( ${} ). Эти заполнители по умолчанию «интерполированы», что означает, что результат выражения заменяет заполнитель в конечной строке.

console.log( "The result is " + ( 2 + 4 ) + "." );
> The result is 6.
console.log( `The result is ${ 2 + 4 }.` );
> The result is 6.

Литерал шаблона можно передать пользовательской функции для создания шаблона с тегами — вызова функции, который использует один литерал шаблона в качестве набора аргументов и позволяет его заполнителям заполняться на основе логики, определенной автором.

Первый аргумент функции тега содержит массив строковых значений, а остальные аргументы определяют заполнители. Этот массив строковых значений создается путем «разделения» литерала шаблона по каждому содержащемуся в нем заполнителю. Первый элемент массива содержит любые символы до первого заполнителя, второй элемент содержит любые символы между первым и вторым заполнителями и т. д. Каждый заполнитель передается функции тега как отдельное значение со связанным заполнителем.

const myNoun = "template literal";

function myTagFunction( myStrings, myPlaceholder ) {
    const myInitialString = myStrings[ 0 ];
    console.log( `${ myInitialString }modified ${ myPlaceholder }.` );
}

myTagFunction`I'm a ${ myNoun }.`;
> "I'm a modified template literal."

Проверьте свое понимание

Какой символ используется для экранирования символов?

Косая черта ( / )
Двойная кавычка ( " )
Обратная косая черта ( )

Какой символ используется для конкатенации?

+
.
&