JS
는 글자 하나만 저장할 수 있는 별도의 자료형이 없습니다.
텍스트 형식의 데이터는 길이에 제한이 없이 문자열 형태로 저장됩니다.
JS
에서 문자열은 페이지 인코딩 방식과는 상관 없이 항상 UTF-16 방식을 따릅니다.
문자열을 저장할 때 3가지 따옴표를 사용 합니다.
큰 따옴표, 작은 따옴표는 기능의 차이가 없습니다.
역 따옴표(백틱`)은 문자열 안에 표현식을 삽입할 수 있는 기능이 있습니다.
이런 방식을, 템플릿 리터럴(template literal)이라고 합니다.
let single='작은 따옴표';
let double="큰 따옴표";
let backticks=`백틱 ${double}`;
let multipleline = `John
Jamse
Tina`; // 백틱을 사용하면 여러줄도 문자열로 표현할 수 있습니다.
백틱을 사용하면 문자열에 함수도 호출할 수 있습니다.
function sum(a, b){
return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}`); // 1 + 2 = 3
🔔 작은 따옴표와 큰 따옴표
작은 따옴표와 큰 따옴표로 문자열을 표현하는 방식은JS
가 만들어졌을 때부터 존재
했습니다. 이 때는 문자열을 여러 줄에 걸쳐서 표현하려는 사고가 없었기에 모던한JS
는 따옴표를 사용해서 여러 줄에 문자열을 걸치면 오류가 발생합니다.
백틱은 이후에 생성되었기에 따옴표(큰/작은)보다 많은 기능을 수행합니다.
🔔 함수에서 백틱사용
백틱은 템플릿 함수에서도 사용됩니다.func `string'
같이 첫 번째 백틱 바로 앞에
함수명을 사용하면, 함수는 백틱 안의 문자열이나 표현식 평가 결과를 인수로 받아서
자동 호출됩니다. 이런 기능을 태그드 템플릿이라고 부르는데 사용자 지정 템플릿에 맞는
문자열을 쉽게 만들 수 있습니다.
줄 바꿈 문자인 \n
을 사용하면 작은 따옴표, 큰 따옴표도 여러 줄의 문자열을 표현할 수 있다.
let guestlist = '손님:\n *John\n *James\n *Tina';
alert(guestlist);
따옴표와 \n
을 사용한 문자열과, 백틱을 사용한 문자열은 동일합니다.
let title="java\nscript"
let title2=`java
script`;
alert(title == title2); // true
유니코드를 사용한 예시
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, 중국어(긴 유니코드)
alert( "\u{1F60D}" ); // 😍, 웃는 얼굴 기호(긴 유니코드)
모든 특수기호(문자)는 역 슬래시\
로 시작합니다. \
은 이스케이프 문자라고 합니다.
역 슬래시는 문자열 내에 따옴표를 넣을 때도 사용할 수 있습니다.
alert(' Hello \'My World\' '); //Hello 'My World'
// 이런 방법 보다는, 백틱안에 따옴표를 사용하는 게 가독성이 좋습니다.
alert(`My Name 'John'`); / My Name 'John'
🔔 메모리상에는
\
가 존재하지 않는다.
역 슬래시는 문자열을 정확하게 읽기 위해서 사용하는 특수 기호로, 자신의 역할이 종료
되면 사라지게 됩니다. 메모리에서 역 슬래시를 저장하게 하려면\\
두 개를 쓰면 된다.