🔑 BigInt - 아주 큰 정수를 다루기 위한 타입
📌 소개
- BigInt는 일반 숫자(Number)가 표현할 수 있는 범위를 넘는 아주 큰 정수를 다룰 수 있게 해줍니다.
- 일반 Number는 약 ±2<sup>53</sup> (약 9천조) 까지만 정확히 표현할 수 있어요.
- BigInt는 이보다 훨씬 큰 숫자를 정확하게 저장하고 연산할 수 있습니다.
✅ 사용 예시
const regularNumber = 9007199254740991; // Number.MAX_SAFE_INTEGER
const bigNumber = 9007199254740991n + 1n;
console.log(bigNumber); // 출력: 9007199254740992n
console.log(typeof bigNumber); // 출력: "bigint"
✅ 주의 사항
- BigInt는 n을 붙여서 작성해야 합니다 (예: 123n).
- BigInt와 Number는 혼합 연산이 불가합니다. 아래는 에러:
let big = 10n;
let num = 5;
// console.log(big + num); // ❌ TypeError
→ 둘 중 하나를 변환해서 써야 함: BigInt(num) 또는 Number(big)
📦 언제 사용할까?
- 블록체인, 고정소수점 계산, 정확한 ID, 매우 큰 숫자를 다룰 때 사용.
🔑 Symbol – 고유한 식별자를 위한 타입
📌 소개
- Symbol은 절대 중복되지 않는 고유한 값을 생성합니다.
- 객체의 속성 키로 사용할 수 있으며, 다른 키와 충돌하지 않게 하기 위해 사용됩니다.
✅ 사용 예시
const id1 = Symbol("id");
const id2 = Symbol("id");
console.log(id1 === id2); // false (고유함)
"id"는 설명을 위한 문자열일 뿐, 심볼 자체의 고유성에는 영향을 주지 않아요.
✅ 객체 속성 키로 사용
const user = {
name: "Alice",
[Symbol("id")]: 123
};
console.log(user); // { name: 'Alice', [Symbol(id)]: 123 }
이 속성은 일반적인 for...in이나 Object.keys()로는 접근되지 않음 → 은밀한 정보 저장 가능.
✅ 공유 Symbol(Symbol.for)
const sym1 = Symbol.for("globalId");
const sym2 = Symbol.for("globalId");
console.log(sym1 === sym2); // true
- Symbol.for()는 전역 심볼 레지스트리를 통해 공유 가능한 심볼을 반환합니다.
📊 요약 비교
항목 BigInt Symbol
목적 | 매우 큰 정수 처리 | 고유한 식별자 생성 |
생성 방식 | 123n, BigInt(123) | Symbol("설명"), Symbol.for("id") |
비교 가능? | === 사용 가능 | === 사용 가능 |
고유성 | 값에 따라 달라짐 | 항상 고유 |
사용처 | 정밀 계산, 대규모 ID | 객체 속성 키, 내부 식별자 |
typeof | "bigint" | "symbol" |
'JAVASCRIPT' 카테고리의 다른 글
화면 스크롤시 해당 위치에서 글자 나타나기 (0) | 2025.06.18 |
---|---|
자바스크립트의 다양한 데이터 타입 반환 (0) | 2025.05.28 |
data type - undefined (0) | 2025.05.28 |
null , array 의 data type 이 object 인 이유 (0) | 2025.05.27 |
+ 연산자의 역할 (0) | 2025.05.27 |