String (문자열)
- 문자열은 0 에서 65535 사이의 크기를 가지는 부호가 없는 16비트 정수로 이루어진 불변 배열입니다.
const test_array = [99, 111, 114, 110];
const test_string = String.fromCharCode(...test_array);
test_string.charCodeAt(0) === 99 // true
test_string.length // 4
typeof test_string // "string"
문자열을 String.fromCharCode 함수로 만들 수도 있는데, 이 함수는 임의 개수의 숫자들을 인자로 받습니다.
문자열 요소는 charCodeAt 함수로 접근할 수 있습니다. 문자열은 항상 동결된 상태이며, 배열과 마찬가지로 length 속성을 가집니다.
- 모든 문자열이 상속받는 String.prototype 에는 문자열에서 작동하는 메서드들이 있습니다.
concat, slice 메서드는 같은 이름을 갖는 배열 메서드와 마찬가지로 동작합니다.
indexOf 는 약간 다른데, 문자열을 인자로 받아 문자열의 모든 요소를 뒤져서 인자로 받은 문자열과 일치하는 첫번째 요소 순서를 찾아 그 색인을 반환합니다.
startsWith, endsWith, contains 는 indexOf 와 lastIndexOf 를 사용한 래퍼 (wrapper) 함수입니다.
- 자바스크립트에서는 16비트가 가질 수 있는 패턴 65536 개를 문자열 요소로 사용할 수 있습니다. 일반적으로 각 요소는 하나의 문자 (character) 로 다뤄지며, 유니코드 표준에 의해 문자열의 인코딩이 결정됩니다.
유니코드 표준은 절대 사용해서는 안 되는 문자가 아닌 몇 가지 코드에 대해 규정하고 있지만, 자바스크립트는 그런 부분에 별로 신경쓰지 않습니다. 16비트 코드는 다 허용합니다. 만약 다른 언어로 만들어진 시스템과 자바스크립트 프로그램이 서로 상호 작용해야 한다면 유니코드를 오용해서는 안 됩니다.
- 문자열 리터럴은 0 개 이상의 유니코드 캐릭터를 큰따옴표나 작은따옴표로 묶어서 만들어집니다.
- 더하기(+) 연산자는 문자열 연결에 사용됩니다.
const test = 'corn';
'uni' + test // 'unicorn'
3 + 4 // 7
String(3) + 4 // 34
3 + String(4) // 34
피연산자 둘 중 하나라도 문자열이면, 문자열 연산이 이뤄집니다.
- 문자열 리터럴은 반드시 한 줄로 끝나야 합니다.
\ (백슬래시) 는 이스케이프 문자로서 문자열 리터럴 내부에 큰따옴표, 백슬래시, 개행 문자를 포함할 수 있게 해줍니다.
- 문자열은 만들어지면 동결됩니다.
- 템플릿 문자열 리터럴은 여러 줄에 걸쳐 쓸 수 있는 문자열 리터럴입니다. ` (백틱, backtick) 가 구분자로 사용됩니다.
const a = (
"Can you"
+ "\nbelieve how"
+ "\nincredibly"
+ "\nlong this"
+ "\nstring literal"
+ "\nis?"
);
const b = `Can you
believe how
incredibly
long this
string literal
is?`;
a === b // true
let fear = 'monsters';
const c = `The only thing we have to fear is ${fear}.`;
c // 'The only thing we have to fear is monsters'
템플릿 문자열 리터럴은 예전 형식에 비해 이득은 있지만 감수해야 하는 비용과 잠재적인 오류가 있다고 합니다. 하지만 실무에서 상당히 많이 쓰이고 있습니다.
템플릿 문자열 리터럴의 이점 중 하나는 문자 보간을 제공한다는 것입니다. ${} 를 써서 올바른 표현식을 넣을 수 있습니다.
웹 환경에서는 이러한 템플릿 문자열에 "<script src=...>" 와 같은 코드가 들어갈 수 있어 보안 위협성을 증가시킨다고 보는 관점도 있는 듯 합니다.
- String 의 match, replace, search, split 함수는 인자로 정규표현식 객체를 받습니다. 정규표현식 객체는 고유 메서드인 exec, text 를 가집니다.
정규표현식 객체는 문자열에 대해 일치하는 패턴이 있는지 찾습니다. 정규표현식 객체로는 JSON 텍스트를 분석할 수 없습니다.
출처 : 자바스크립트는 왜 그 모양일까?
'Backend > Javascript' 카테고리의 다른 글
[Javascript] - Statement (0) | 2020.11.21 |
---|---|
[Javascript] - Bottom value (0) | 2020.11.14 |
[Javascript] - Object (0) | 2020.10.31 |
[Javascript] - Array (0) | 2020.10.24 |
[Javascript] - Boolean (0) | 2020.10.17 |