Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 플로이드 워셜
  • 구현
  • 백준 파이썬
  • 백준
  • 파이썬 감시 피하기
  • 문자열
  • BFS + DP
  • 파이썬
  • DP
  • bfs
  • react-router-dom
  • dfs
  • Next.js
  • 이분탐색
  • 백준 숨바꼭질
  • js
  • 시뮬레이션
  • 자바스크립트
  • 파이썬 다익스트라
  • React

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

✍ 공부/JavaScript

[ 모던 자바스크립트 Deep Dive ] 변수와 값의 재할당

2022. 12. 25. 11:27
반응형

 

0. 용어 정리

  • 런타임 : 소스코드가 순차적으로 실행되는 시점
  • 호이스팅 : 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트의 특징
  • 재할당 : 이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것
  • 가비지 콜렉터 : 애플리케이션이 할당한 메모리 공간을 주기적으로 검사하여 더 이상 사용되지 않는 메모리를 해제하는 기능. 더 이상 사용되지 않는 메모리란, 어떤 식별자도 참조하지 않는 메모리 공간을 의미. 자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어로서 가비지 콜렉터를 통해 메모리 누수(memeory leak)을 방지한다.
  • 매니지드 언어 : 메모리의 할당 및 해제를 위한 메모리 관리 기능을 언어 자체가 담당한다. 개발자의 직접적인 메모리 제어가 불허된다. 개
  • 언매니지드 언어 : 개발자가 명시적으로 메모리를 할당, 제어, 주도할 수 있다.

 

 

1. 변수 선언과 값 할당의 실행 시점

변수 선언 : 런타임 이전에 실행
값 할당 : 런타임에 실행

(변수 선언만 아니라 var, let, const, function, function*, class 키워드를 사용해서 선언하는 모든 식별자는 호이스팅된다)

 

 

2. 값의 재할당

 

이미 값이 할당되어 있는 변수에 새로운 값을 또다시 할당하는 것.

var score = 80;
score = 90;

 

var 키워드로 선언한 변수는 선언과 동시에 undefined로 초기화되기 때문에 엄밀히 말하자면 변수에 처음으로 값을 할당하는 것도 사실은 재할당이다

var score = 80; // -> 여기서 이미 undefined에서 80으로 값이 재할당되었다.
score = 90;

 

 

변수에 값을 재할당하면(80 -> 90 부분)
=> score 변수 앖은 80에서 90으로 재할당된다

 

메모리 공간은 어떻게 반응할까?

  1. 80이 저장되어 있던 메모리 공간을 지우고 90으로 변경한다
  2. 80이 저장되어 있던 메모리는 그대로 두고 90을 저장하는 메모리 공간을 새로 만든다 ⭐

정답은 2번입니다!! 재밌죠?

 

3. 그렇다면...

  1. 현재 score 변수의 값은 90이다
  2. 전에 할당된 변수의 값 80이 메모리 공간에 존재한다
  3. 그 ~ 전에 할당된(선언 시점에 할당된) 값 undefined가 메모리 공간에 존재한다.

하지만 변수에 값을 재할당 한 지금. 2번과 3번은 필요 없는 값이 된다.
이러한 불필요한 값들은 가비지 콜렉터에 의해 메모리에서 자동 해제된다.
단, 언제 해제될지는 예측할 수 없다

 

 

 

 

 

 

 

 

 

반응형
저작자표시 (새창열림)

'✍ 공부 > JavaScript' 카테고리의 다른 글

[ 모던 자바스크립트 Deep Dive ] 쉼표 연산자  (0) 2022.12.25
[ 모던 자바스크립트 Deep Dive ] 동등/일치 비교 연산자  (0) 2022.12.25
[ 모던 자바스크립트 Deep Dive ] 들어가며  (0) 2022.12.25
(JavaScript) 자바스크립트 async / await / promise  (0) 2022.06.12
이벤트 제어하기. 쓰로틀링(throttling)과 디바운싱(debouncing)  (0) 2022.06.12
    '✍ 공부/JavaScript' 카테고리의 다른 글
    • [ 모던 자바스크립트 Deep Dive ] 쉼표 연산자
    • [ 모던 자바스크립트 Deep Dive ] 동등/일치 비교 연산자
    • [ 모던 자바스크립트 Deep Dive ] 들어가며
    • (JavaScript) 자바스크립트 async / await / promise
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바