문자열

큰따옴표("), 작은따옴표('), 백틱(`) 사이의 모든 문자 집합(문자, 숫자, 기호 등)은 문자열 프리미티브입니다. 이 과정에서 이미 문자열의 몇 가지 예를 살펴봤습니다. 이전 모듈의 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."

이해도 테스트

문자를 이스케이프 처리하는 데 사용되는 문자는 무엇인가요?

백슬래시 ()
큰따옴표 (")
슬래시 (/)

연결에는 어떤 문자가 사용되나요?

+
&
.