본문 바로가기

JavaScript/Modern JavaScript

[JavaScript] 데이터타입 Symbol 과 bigInt

Symbol

심볼(Symbol) 은 기본형 데이터 타입 중 하나로, 코드 내에서 유일한 값을 가진 변수 이름을 만들 때 사용된다.

 

const user = Symbol();
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
...

Symbol 값을 담게 된 user 이름의 변수는 어느 값과 비교해도 false 가 된다.

 

const symbolA = Symbol('this is Symbol');
const symbolB = Symbol('this is Symbol');

console.log(symbolA === symbolB); // false

심지어 똑같은 두 값을 담더라도 두 값의 일치비교는 false.

 


BigInt

BigInt 는 자바스크립트에서 가장 큰 정수를 담기위해 만들어진 데이터 타입이다.

자바스크립트의 안전한 정수 표현에는 한계가 있는데, 안전한 최대정수는 2**53 - 1 , 안전한 최소정수는 -(2**53 -1) 이다.

이는 구체적인 숫자로 표현하면 9007199254740991 인데, 실제로 아래처럼 값을 비교하면 모두 같은 숫자가 나오는 것을 알 수 있다.

 

console.log(9007199254740991 + 1 === 9007199254740991 + 2); // true
console.log(9007199254740991 + 2); /// 9007199254740992
console.log(9007199254740993); /// 9007199254740992

 

이때 사용할 수 있는 데이터타입인 BigInt 를 사용하면, 아래와 같이 나타낼 수 있다.

BigInt(숫자) 혹은 (숫자n) 으로 작성해주면 된다.

console.log(9007199254740993n); // 9007199254740993n
console.log(BigInt(9007199254740993)); // 9007199254740993

 

BigInt 는 소수표현에는 사용할 수 없음.

1.5n; // SyntaxError

 

소수형태 결과가 리턴되는 연산은 소숫점 아래가 버려지고 정수로 리턴됨.

10n / 6n; // 1n
5n / 2n; // 2n

 

또한 BigInt 타입끼리만 연산이 가능하다.

3n * 2; // TypeError
3n * 2n; // 6n
Number(3n) * 2; // 6

 

'JavaScript > Modern JavaScript' 카테고리의 다른 글

[JavaScript] this 객체  (0) 2023.05.18
[JavaScript] 변수와 스코프  (0) 2023.05.02
[JavaScript] 배열 메소드 forEach 와 map  (0) 2023.04.11
[JavaScript] sort/ reverse 메소드  (0) 2023.03.26
[JavaScript] Arrow Function  (0) 2023.03.06