본문 바로가기
javascript/자바스크립트는 왜 그 모양일까

객체

by yongfront 2024. 3. 9.
반응형
SMALL

객체는 자바스크립트의 기본 데이터 구조입니다.

다른 언어에서는 이런 객체를 해시 테이블, 맵, 레코드, 구조체, 연관 배열, 딕셔너리, dict (더글라스 크락포드가 파이썬을 싫어하는 것 같기도 합니다.) 라고 부르며,

자바스크립트에서는  두개의 빈값, 즉 null 과 undefined를 제외한 모든 것을 객체로 취급합니다.

typeof {};             // "object"
typeof [];             // "object" (배열도 객체로 취급됨)
typeof "Hello";        // "string"
typeof 42;             // "number"
typeof true;           // "boolean"
typeof function() {};  // "function"
typeof null;           // "object" (특이한 케이스)
typeof undefined;      // "undefined"

 

null이 "특이한 케이스"라고 하는 이유는 typeof 연산자로 확인했을 때 결과가 "object"로 나오는데, 이는 null이 실제로는 객체가 아니지만 자바스크립트 초기 버전의 오류 때문에 발생한 것입니다.

이는 초기 자바스크립트가 개발될 때 발생한 문제로, 이 문제는 현재의 자바스크립트 엔진에도 여전히 남아있습니다. null의 타입을 "null"이 아니라 "object"로 반환하는 것은 호환성을 유지하기 위한 선택이었습니다. 이러한 오류가 이미 자바스크립트의 일부로 자리 잡았고, 이를 수정하면 많은 기존 코드가 영향을 받을 것으로 예상되기 때문에 수정되지 않은 채로 남아있습니다.

따라서 null이 "object"로 반환되는 것은 자바스크립트의 초기 오류로 인한 특이한 동작입니다. 이러한 특이성은 이후의 ECMAScript 표준에서도 유지되어 왔습니다.

728x90
반응형
LIST