BigInt는 아주 큰 정수를 다루는 금융 시스템의 초 단위 이자 계산이나 누적 수익 같은 상황에서 필요하지만, 소수점 계산은 불가능하다. 공개키·비밀키 계산처럼 수십 자리 이상 정수를 다뤄야 하는 암호화 알고리즘에서도 필수적으로 쓰인다. 일반 숫자 Number가 너무 커서 정확도가 떨어지는 경우에도 BigInt 사용이 유리하다.
BigInt를 사용할 때 주의할 점은 BigInt와 일반 숫자 Number를 함께 산술 연산으로 쓰면 안 된다는 것이다. 비교 연산은 가능하지만 타입이 다르면 의도와 다른 결과가 나올 수 있어, 같은 타입으로 변환한 후 연산을 수행하는 것이 안전하다.
자주 하는 실수를 정리하면, 먼저 null과 undefined의 구분을 놓는 경우가 많다. null은 개발자가 비어있음을 명시하는 값이고, undefined는 변수가 선언되었지만 값을 할당하지 않은 상태를 나타낸다. 둘을 구분해 사용해야 의도한 로직이 제대로 작동한다. 둘째, 배열(Array)과 객체(Object)를 혼동하는 경우가 흔하다. 배열은 [ ]로 생성되며 순서가 있는 값들의 모음으로 숫자 인덱스로 접근하고, 객체는 { }로 생성되며 키-값 쌍으로 구성되되 키는 문자열이나 심볼이고 순서는 중요하지 않다. 셋째, NaN을 == 또는 ===로 직접 비교하려는 실수도 많다. NaN은 자기 자신과도 같지 않은 유일한 값이므로 NaN === NaN조차도 false인데, 이를 체크하려면 Number.isNaN()를 사용하는 것이 정확하다. 넷째, 객체를 값이 아닌 구조로 비교하려는 시도도 흔하다. JSON.stringify로 비교하면 구조와 값이 같고 속성의 순서까지 동일할 때만 true가 되지만, 함수나 순환참조가 있는 복잡한 객체에서는 실패하므로 단순한 객체에만 안전하게 활용해야 한다. 다섯째, 빈 문자열과 다른 falsy 값을 구분하지 않고 조건문에 쓰는 실수도 많다. false, 0, 빈 문자열, null, undefined, NaN은 조건문에서 false로 평가되므로, 명시적으로 빈 문자열을 비교해 의도를 명확히 하고 오해를 줄이는 것이 바람직하다.
#
JavaScript
#
프로그래밍입문
#
코딩초보
#
자바스클립트false
#
자바스크립트타입비교
#
자바스크립트실수
#
자바스크립트데이터타입
#
자바스크립트기초
#
자바스크립트
#
웹개발기초
#
JS데이터타입
#
프론트엔드공부