1. String.length
자바스크립트 String 객체는 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메소드를 제공하는 객체이다. String 객체는 String 생성자 함수를 통해 생성할 수 있으며, 이 때, 전달된 인자는 모두 문자열로 반환된다. name이라는 변수에 String 객체를 할당하고 각각을 콘솔에 찍어보면 다음과 같이 나온다. 이 때, String.length를 이용하여 콘솔에 찍어보면 3을 반환하는 것을 알 수 있다.
let name = new String('Lia');
console.log(name) // String {'Lia'}
console.log(name.length); // 3
문자열 내의 문자 갯수를 반환하는 것으로, String 객체는 length 프로퍼티를 소유하고 있어 유사 배열 객체라고 할 수 있다.
2. String Method
2.1.String.chartAt()
chartAt() 함수는 인수로 전달한 index를 사용하여 index에 해당하는 위치의 문자를 반환하는 함수로, index는 0부터 문자열 길이 - 1 사이의 정소이다. 지정한 index가 문자열의 범위를 벗어난 경우 빈문자열을 반환한다.
const name = 'Lia';
console.log(str.charAt(0)); // L
console.log(str.charAt(1)); // i
console.log(str.charAt(2)); // a
console.log(str.charAt(3)); // ''
2.2.String.concat()
concat() 함수는 인수로 전달한 1개 이상의 문자열과 연결하여 새로운 문자열을 반환할 때 사용하는 함수이다.
const name = 'Lia,';
const hello = 'hello!';
console.log(name.concat(hello)); 'Lia,hello!'
2.3.String.indexOf()
indexOf() 함수는 인수로 전달한 문자 또는 문자열을 대상 문자열에서 검색하여 처음 발견된 곳의 index를 반환한다. 발견하지 못한 경우에는 -1울 반환한다.
const name = 'Lia, hi!';
console.log(name.indexOf('L')); // 0
console.log(name.indexOf('i')); // 1
console.log(name.indexOf('a')); // 2
console.log(name.indexOf('b')); // -1
2.4.String.lastIndexOf()
lastIndexOf()는 indexOf()와는 반대로 마지막으로 발견된 곳의 index를 반환한다. 발견하지 못한 경우 -1을 반환한다.
const name = 'Lia, hi!';
console.log(name.indexOf('i')); // 1
console.log(name.lastIndexOf('i')); // 6
2.5.String.replace()
replace()는 원하는 문자열을 찾아 다른 문자열로 바꿔줄 때 사용하는 함수로, 첫번째 인자로는 찾을 문자열, 두번째 인자로는 치환할 문자열을 넘긴다. 이 때, 주의할 점은 왼쪽부터 최초로 발견된 문자열에 대해서만 치환이 이루어진다는 점이다.
const greeting = 'Lia, hello, hello!';
console.log(greeting.replace("hello", "Hi")); // Lia, Hi, hello!
2.6.String.split()
split() 함수는 첫번째 인자로 넘긴 문자를 기준으로 문자열을 잘라 각 요소를 배열에 담아 배열 객체를 반환해주는 함수이다.
const greeting = 'Hi&Lia!hello';
console.log(greeting.split("&")); // ['Hi', 'Lia!hello']
2.7.String.substring() / substr() / slice()
substring() 함수는 첫번째 인자로 전달된 시작 index부터 두번째 인자로 전달된 종료 index 앞까지의 문자열을 반환해주는 함수이고, substr() 함수는 시작 index부터 두번째 인자로 넘겨준 문자 개수만큼 문자열을 잘라 반환해주는 함수이다. slice()는 substring()과 동일하며 음수의 인수를 전달할 수 있다는 차이가 존재한다.
const greeting = 'Hi&Lia!hello';
console.log(greeting.substring(0, 6)); // Hi&Lia
console.log(greeting.substr(3, 3)); // Lia
2.8.String.toLowerCase() / toUpperCase()
toLowerCase()는 대상 문자열의 모든 문자를 소문자로 변경하는 것이고, toUpperCase()는 대상 문자열을 모두 대문자로 변경하는 함수이다.
const greeting = 'Hi&Lia!hello';
console.log(greeting.toLowerCase()); // hi&lia!hello
console.log(greeting.toUpperCase()); // HI&LIA!HELLO
2.9.String.trim()
trim() 함수는 대상 문자열 양쪽 끝에 있는 공백을 제거한 문자열을 반환한다.
const name = ' Lia ! ';
console.log(name.trim()); // Lia !
2.10.String.repeat()
repeat()는 인수로 전달한 숫자만큼 반복하여 새로운 문자열을 반환할 때 사용한다. 인수로 전달한 숫자가 0이면 빈문자열을 반환하고 음수이면 RangeError를 발생시킨다.
const greeting = 'hello';
console.log(greeting.repeat(0)); // ''
console.log(greeting.repeat(1)); // 'hello'
console.log(greeting.repeat(2)); // 'hellohello'
console.log(greeting.repeat(-2)); // Uncaught RangeError: Invalid count value: -2
2.10.String.includes()
includes() 함수는 인수로 전달한 문자열이 포함되어 있는지를 검사하고 결과로 true, false 값을 반환한다.
const greeting = 'Hi&Lia!hello';
console.log(greeting.includes('Lia')); // true
console.log(greeting.includes('bye')); // false
3. Symbol 타입이란?
자바스크립트는 원래 6개의 타입을 가지고 있었는데 ES6에서 symbol이라는 타입이 새롭게 추가되었다. 심볼 타입은 변경 불가능한 원시 타입의 값으로 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키를 만들기 위해 사용한다고 한다. 심볼은 Symbol() 함수로 생성할 수 있으며, 해당 함수는 호출될 때마다 Symbol 값을 생성한다. 또한, String, Number, Boolean과 같이 래퍼 객체를 생성하는 생성자 함수와는 달리 new 연산자를 사용하지 않는다는 특징을 가진다.
let newSymbol = Symbol();
console.log(newSymbol); // Symbol()
console.log(typeof newSymbol); // symbol