배워서 남 주자

JavaScript의 치명적 버그

미래에서 온 개발자 2022. 10. 8. 16:15

자바스크립트에서 자료형은 크게 원시형(Primitive data type)과 참조형(Reference data type) 두 가지로 나뉜다.

원시형에는 우리가 잘 아는 문자열(string)숫자(number), 참(true)과 거짓(false) 두 가지 판별값을 가지는 불리언(boolean)이 있고, 이 세 가지 자료형 외에도 undefinednull이 있다.
그리고 참조형에는 그 유명한 객체(object)가 있다.

그리고 개별 데이터가 어떤 자료형에 속하는지를 typeof 연산자를 통해 쉽게 알아볼 수 있다. 바로 아래와 같이.

console.log(typeof "calender"); // string
console.log(typeof 2022); // number
console.log(typeof true); // boolean
console.log(typeof undefined); // undefined
console.log(typeof null); // object
console.log(typeof { name: "Kim", age: 17 }); // object


잠깐만. 무언가 이상한 점이 바로 감지된다. null이 object라고...?

자바스크립트 초창기부터 있던 버그인데 고치기에는 이미 너무나 많은 자바스크립트 코드들이 범용으로 쓰이고 있어서 그냥 버그를 그대로 두고 있다고 한다. 오늘날까지, 아마 앞으로도 쭉 자바스크립트는 이러한 근본적인 오류를 가지고 쓰일 것이다. 마치 아래에 구멍 하나가 나 있어도 아무렇지도 않게 그 위로 계속 쌓아올릴 수 있는 젠가 블럭처럼 말이다.

처음 듣는 자바스크립트 문법 강의에서 강사 분이 자료형을 설명하면서 이러한 버그를 소개했을 때 아, 역시나 세상은 의외로 아무렇게나 쌓아 올려져 있구나 싶었다. 완벽할 필요는 없고 그저 앞으로 나아가는 것만이 중요하다는 생각을 다시 한 번 할 수 있었다. typeof null이 object를 반환하면 어떠한가? 그래도 우리는 웹에서 각종 페이지들을 보고 어플리케이션을 구동하며 살아가고 있다.