JavaScript 심화
Symbol·Number·String: ‘기본형’을 심화스럽게 쓰는 법
키 충돌을 피하는 Symbol, 소수점/NaN 함정, 문자열 처리 메서드를 한 번에 정리합니다.
그림 1. Symbol로 키 충돌을 피하는 방식
Symbol: 키 충돌을 피하는 가장 간단한 방법
객체에 속성을 추가할 때, 문자열 키는 다른 코드와 충돌할 가능성이 있습니다. 이럴 때 Symbol()을 키로 쓰면 유일한 키를 만들 수 있습니다.
const id = Symbol('id');
const user = {
name: 'Soo',
[id]: 1234,
};
console.log(user[id]);
자주 나오는 포인트
Symbol.for('key'): 전역 레지스트리에서 같은 Symbol을 공유합니다.- 일반 순회(
for..in,Object.keys)에서는 Symbol 키가 빠질 수 있습니다.
Number / Math: 숫자와 소수점 함정
자바스크립트의 숫자는 기본적으로 IEEE 754 부동소수점 기반이라, 소수점 연산에서 작은 오차가 생길 수 있습니다. ‘왜 이 값이 0.30000000000000004가 나오지?’ 같은 상황을 예방하려면 아래 패턴을 기억해 두시면 좋습니다.
- 정확한 비교: 소수점 비교는 오차 허용 범위를 두는 방식이 안전합니다.
- NaN 체크:
Number.isNaN()을 사용하시면 의도대로 판별하기 좋습니다.
const x = 0.1 + 0.2;
console.log(x); // 0.30000000000000004
const EPS = 1e-10;
console.log(Math.abs(x - 0.3) < EPS); // true
String: 실무에서 자주 쓰는 메서드들
문자열은 UI/로그/포맷팅에서 정말 많이 사용됩니다. 아래 메서드는 실무에서 사용 빈도가 높으니, 최소한의 ‘감’만 잡아두셔도 도움이 됩니다.
includes/startsWith/endsWithslice/substring(미묘한 차이점 존재)padStart/padEnd(자리 맞추기)- 템플릿 리터럴:
`Hello ${name}`
const n = 7;
console.log(String(n).padStart(3, '0')); // 007
참고 링크
'Tech Note > 웹-JavaScript' 카테고리의 다른 글
| [심화] 04. Rest/Spread·클로저·타이머 (1) | 2026.01.04 |
|---|---|
| [심화] 03. 배열 메서드·구조 분해 할당 (0) | 2026.01.04 |
| [심화] 01. 호이스팅·TDZ·생성자 함수 (0) | 2026.01.04 |
| [기초] 05. 객체, this 배열 (0) | 2026.01.04 |
| [기초] 04. 함수기초, 함수표현식 (0) | 2026.01.04 |