[Core Javascript] JS 분석 from scratch: 데이터, 변수, 메모리 관련 기본지식

이해를 위한 기본지식

들어가며...!

제가 기로하는 내용은 [코어 자바스크립트]라는 내용으 기반으로 합니다.
프로그래밍 치고는 얇은 200p가 안되는 얇은 책이지만,
비전공자 입장에서 책 하나하나 깊은 내용을 이해하다 보니 시간이 오래 거리네요.

조금 오래걸리더라도 천천히 이해시키고 제 것으로 만들기 위해 공부한 내용을 정리하고 기록하고 있습니다.

기초지식을 알아야 나중에 해매지 않을 것입니다.

이 책을 접하고 나서 금방 읽을 수 있다는 자신감이 생겼습니다.
보통의 프로그래밍 언어에 대한 책은 정말 두꺼운데 이건 얇았기 때문입니다.
하지만 초반 부터 이해가 어려워 정말 느리게 진도를 나갔고 반복해서 읽었습니다.

왜냐하면 단순히, 자바스크립트란 어떤 언어이고 이런 문법들이 있다~~~
하는 책들과는 달랐고, 자바스트립트의 본질적인 특징들을 설명하는 것이 많았습니다. 이런 것 까지 알아야 하나 싶었지만,

그래도!!

이런 언어의 기반이 되는 지식을 알아야 나중에 더 능숙하게 다룰 수 있겠다 싶었습니다. 느리긴 해도 배울 때 제대로 배우고 싶었습니다.

그러면 이만 줄이고, 시작하겠습니다!!
leg's get started

데이터 타입(Data Type)의 종류

  • 자바스크립트의 데이터 타입 구분입니다.

그렇다면 기본형과 참조형 데이터를 구분하는 기준은 무엇일까요?

결론부터 말하자면,

- 기본형 - 값이 담긴 주솟값을 바로 복제

- 참조형 - 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제

결론은 참 이해하기 힘듭니다.

이것을 이해하기 위해 알아야할 배경지식들이 있습니다.

변수와 식별자

  • 변수는 variable이라고도 합니다. 보통 변수와 식별자를 혼용해서 쓰지만 분명히 다릅니다. 변수는 데이터를 변할 수 있는 무언가를 뜻 합니다.

  • 식별자는 어떤 데이터를 식별하는 데 사용하는 이름입니다. 변수명이라고 할 수 있습니다.
    데이터는 메모리의 저장되면서 주솟값을 갖게 되는데 그것으로 데이터를 구분합니다. 식별자는 그 메모리 주솟값과 연결(바인딩)되어 있어 주솟값을 알지 못해도 변수명으로 데이터 구분이 가능해지는 것이죠!

변수 데이터 저장 방식

또 중요하게 알아야하는 것은 변수를 선언하여 저장하면 변수와 데이터 영역은 각기 다른 공간에 따로 저장된다는 것입니다!

let a = 'abc'

이렇게 변수를 선언한다면, 실제 컴퓨터 메모리 구조에서는 식별자 a 와 데이터 'abc'는 따로 저장된다는 것이죠

왜 컴퓨터는 변수 영역에 값을 직접 대입하지 않고 따로 저장하는 걸까요?

  1. 데이터 변환을 자유롭게 하기 위해

    • 데이터가 메모리에 미리 확보된 공간에 저장한다면, 다른 데이터로 재할당할 때 데이터에 따라 확보된 공간을 늘렸다 줄였다 해야합니다. 중간 일부만 데이터를 변경할 경우 뒤쪽 데이터를 밀고 다시 식별자 연결하는 작업을 반복해야 합니다.
  2. 메모리를 더 효율적으로 사용하기 위해

    • 반면, 데이터를 재할당 할 때 마다 공간을 새로 만들어 저장하고 주소 값만 연결(바인딩)시켜 준다면 더 효율적으로 메모리를 관리할 수 있게되죠!

불변값과 가변값

여기서 변수와 상수를 구분하는 개념이 나오는데요.

  • 변수와 상수를 구분 짓는 기준은 변수 영역 메모리인 것입니다.
    - 따라서 변수는 변수 영역 메모리를 재할당 하면서 변수 값을 재할당 가능합니다.

  • 불변값과 가변성 여부는 데이터 영역의 메모리가 기준이 되죠.
    - 위 그림에 나오는 기본형 데이터는 모두 불변값으로 새로운 데이터를 생성할 때 마다 새로운 데이터가 메모리에 저장됩니다. (불변하기 때문에 바꾸지 않고 새로 만드는 것이죠)

-> 이렇게 이해가 되는 이유는 메모리가 각기 다른 공간에 변수와 데이터를 저장하기 때문인거죠! 앞에 내용이랑 연결됩니다..!

이 기본배경으로 다음에는
기본형과 참조형의 차이를 본격적으로 분석해보겠습니다!

좋은 웹페이지 즐겨찾기