2023-04-18 화요일

·2023년 4월 18일
0

Today I Learned

목록 보기
100/114
post-thumbnail

📅 오늘 한 일


1. 타입스크립트 공부

2. 자바스크립트 공부

✏️ 무엇을 배웠나


1. 변수란 무엇인가

변수는 값을 저장하고 참조할 수 있게 해주는 식별자다. 컴퓨터는 연산 데이터를 메모리에 저장한다. 반대로 그 데이터를 사용하고 싶으면 꺼내서 써야 하는데 메모리 위치를 가리키는 주소는 사람이 읽고 쓰기가 쉽지 않다. 변수는 메모리 주소 대신 사용하는 라벨 같은 것이다.

  1. 결국변수가 가리키는 건 특정 값이 들어 있는 메모리 주소임
  2. 변수를 참조하면, JS 엔진이 변수에 매핑된 메소리 주소로 접근해서 값을 가지고 옴

2. 변수 선언 과정

const name = 'san'

const 키워드를 사용해서 name이라는 변수를 선언하고 거기 문자열 san을 할당했다. IDE 뒤에서 일어나는 일은 이렇다.

  1. 값을 저장할 실제 메모리 공간을 확보
  2. 변수 이름과 메모리 주소를 연결

var 키워드를 사용했을 때, 자바스크립트 엔진이 변수를 선언하는 과정을 살펴보자.

평가 과정

  1. 선언
    변수 이름을 실행 컨텍스트에 등록한다. 이때 변수 이름과 변수 값은 key / value 쌍의 객체로 등록된다.
  2. 초기화
    변수에 최초로 값을 할당하는 것을 초기화라고 한다. var의 경우 초기화가 평과 과정에서 undefined로 이뤄진다. 메모리 상에 혹시 남아 있을지 모르는 데이터를 털어내기 위해서 초기화는 필요하다. 짐을 담기 전에 박스를 비우는 거임.

실행 과정(런타임)

  1. 할당
    변수에 특정 데이터를 저장한다
  2. 재할당 (var, let 키워드만)
    변수에 새로운 데이터를 저정한다. 이때 기존 메모리에 덮어쓰는 방식이 아님! 재할당이 일어나면 새로운 메모리에 값을 저정하고 변수 이름을 이 새로운 메모리 주소와 다시 연결함.

3. 재할당은 덮어쓰기 방식이 아니라 비효율적인 거 아닌가?

라고 생각했다. 재할당하고 나면 식별자 없는 값이 그냥 메모리에 있는 거니까. 메모리 낭비다. 여기서 가비지 컬렉터가 나타난다. 쓰레기 치우는 놈인데 식별자 없이 메모리에서 무위도식하는 데이터들을 주기적으로 전부 내다버린다. 단, 언제 나타나서 내다버릴지는 모른다.

profile
⛰ 프론트엔드 개발 공부 블로그

0개의 댓글