큰따옴표("
), 작은따옴표('
) 또는 백틱(``) 사이에 있는 문자(문자, 숫자, 기호 등) 집합은 문자열 원시입니다. 이 과정에서 이미 문자열의 예를 몇 가지 살펴봤습니다. 이전 모듈의 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."
이해도 확인
문자를 이스케이프 처리하는 데 사용되는 문자는 무엇인가요?
∖
)"
)/
)연결에 사용되는 문자는 무엇인가요?
+
&
.