많이는 사용되지 않지만 ES2015 이후로 6개의 데이터 타입 외에 2개의 데이터 타입이 추가되었다. 많이 활용되진 않으니 가볍게 정리를 해보자.
Symbol 심볼은 기본형 데이터 타입 중 하나로 코드 내에서 유일한 값을 가진 변수 이름을 만들 때 사용한다.
//이렇게 symbol이라는 함수를 통해 심볼 값을 만들어 낼 수도 있다.
const user = Symbol('this is a user');
//그리고 괄호 안에 심볼에 대한 설명을 붙일 수도 있다.
//이렇게 Symbol 값을 담게 된 user라는 이름의 변수는 다른 어떤 값과 비교해도 true가 될 수 없는 고유한 변수가 된다.
const user = Symbol('this is a user');
user === 'this is user'; // false
user === 'user'; // false
user === 'Symbol'; // false
user === true; // false
user === false; // false
user === 123; // false
user === 0; // false
user === null; // false
user === undefined; // false
...
//심지어 똑같은 설명을 붙인 심볼을 만들더라도 두 값을 비교하면 false가 반환된다.
const symbolA = Symbol('this is Symbol');
const symbolB = Symbol('this is Symbol');
console.log(symbolA === symbolB); // false
BigInt 는 자바스크립트에서 아주 큰 정수(integer)를 표현하기 위해 등장한 데이터 타입이다. 자바스크립트의 숫자에는 안전한 정수 표현에 한계가 있는데, 안전한 정수 표현이라는게 조금 이상하긴 하지만 약 9,000조 정도의 숫자를 넘어가면 연산에 미세한 오류가 발생한다.
//Biglnt 타입의 값은 일반 정수 마지막에 알파벳 n을 붙이거나 Biglnt라는 함수를 사용하면 된다.
console.log(9007199254740993n); // 9007199254740993n
console.log(BigInt('9007199254740993')); // 9007199254740993n
//하지만 말 그대로 큰 정수를 표현하기 위한 데이터 타입이기 때문에 소수에 대한 표현은 지원하지 않는다.
1.5n; // SyntaxError
//소수로 결과가 리턴되는 연산은 소숫점 아랫부분을 버리고 정수 형태로 리턴한다.
10n / 6n; // 1n
5n / 2n; // 2n
//그리고 Biglnt 타입 끼리만 연산이 가능하고 서로 다른 타입은 명시적으로 타입변환을 해야한다.
3n * 2; // TypeError
3n * 2n; // 6n
Number(3n) * 2; // 6
'코린이 개념잡기 > JavaScript' 카테고리의 다른 글
AND와 OR 연산자 심화 (0) | 2024.12.15 |
---|---|
Falsy & Truthy (1) | 2024.12.15 |
이벤트 자세히 다뤄보기 (1) | 2024.12.15 |
어떤 이벤트들이 있을까? (0) | 2024.12.14 |
자바스크립트 이벤트 (0) | 2024.12.14 |