Любой набор символов — букв, цифр, символов и т. д. — заключенный в двойные кавычки ( "
), одинарные кавычки ( '
) или обратные кавычки (`), является строковым примитивом. Вы уже видели Несколько примеров строк в этом курсе: экземпляры 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."
Проверьте свое понимание
Какой символ используется для экранирования символов?
∖
)"
)/
)Какой символ используется для конкатенации?
+
&
.