개요

이번 글은 아래 책의 일부를 읽고 난 다음, 책에는 언급되지 않은 부분에 대해 정리한 글입니다.

image.png

한 권으로 읽는 컴퓨터 구조와 프로그래밍: 더 나은 소프트웨어 개발을 위한 하드웨어, 자료구조, 필수 알고리즘 등 프로그래머의 비밀 노트

<aside> 💡

7장 데이터 구조와 처리 - 어떻게 해야 프로그램에서 데이터를 잘 구성하고 처리할까

기본 데이터 타입 / 배열 / 비트맵 / 문자열 / 복합 데이터 타입 / 단일 연결 리스트 / 동적 메모리 할당 / 더 효율적인 메모리 할당 / 가비지 컬렉션 / 이중 연결 리스트 / 계층적인 데이터 구조 / 대용량 저장장치 / 데이터베이스 / 인덱스 / 데이터 이동 / 벡터를 사용한 I/O / 객체 지향의 함정 / 정렬 / 해시 / 효율성과 성능

</aside>

목차

JavaScript의 경우 배열 원소의 타입이 달라도 되지 않나

(276쪽) 프로그래머는 호수를 인덱스(첨자라고도 부른다)라고 부르고, 각각의 집을 원소라고 부른다. 일반적인 컴퓨터 개발 규정(프로그래밍 언어의 문법)에서는 배열 원소의 타입이 모두 같아야 한다고 정해져 있다.

이 부분을 읽자마자 JavaScript 무시하는 거 아냐? 라고 속으로 생각하며👊 정적 타입 언어/동적 타입 언어의 차이점을 다시금 되짚어 보기로 했습니다.

책에서 말하는 일반적인 컴퓨터 개발 규정이라함은, C, Java, C++ 같은 정적 타입 언어(statically typed languages)에서의 규칙. 하지만 JavaScript동적 타입 언어(dynamically typed language)라서 이 규칙이 적용되지 않습니다.


정적 타입 언어와 동적 타입 언어 차이


자바스크립트에서 가능한 이유

자바스크립트에서는 배열이 단순한 연속된 메모리 공간이 아니라, 사실상 객체(Object) 로 구현되어 있습니다.

즉, 배열 내부의 각 원소는 **값(value)**과 함께, 그 값이 어떤 타입인지는 자바스크립트 엔진이 런타임에 판단합니다.

<aside> 💡