모던 자바스크립트 Deep Dive - 제 4장 변수

손용현·2024년 7월 3일
0
post-thumbnail

> 모던 자바스크립트 Deep Dive 제 4장 변수 요약정리

4.1 변수란 무엇인가? 왜 필요한가?

변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름을 뜻함
값의 위치를 가리키는 상징적인 이름


4.2 식별자

식별자는 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 말한다. 그러므로 식별자는 값이 아니라 메모리 주소를 기억하고 있다.


4.3 변수 선언

값을 저장하기 위한 메모리 공간을 확보하고 변수 이름과 확모된 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것이다. 확보 해제되기 전까지는 누구도 확보된 메모리 공간을 사용할 수 없게 보호되어 안전한 사용이 가능하다.

  • 변수를 선언할 때는 var, let, const 키워드가 사용됨

  • 자바스크립트 엔진은 변수 선언을 선언 단계, 초기화 단계로 2단계에 수행

    선언 단계: 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.
    초기화 단계: 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화 한다. 초기화 하지 않을 시 이전 다른 어플리케이션에서 사용한 쓰레기값이 할당될 수 있다.


4.3 변수 선언의 실행 시점과 변수 호이스팅

  • 변수 선언의 실행 시점 = 런타임이 아닌 그 이전 단계

    소스코드 실행을 위한 준비 단계인 소스코드의 평가 과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문을 소스코드에서 먼저 찾아내 먼저 실행

  • 호이스팅: 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징

consle.log(score);
var score;

이러한 이유로 선언문이 호출문 아래 있어도 참조에러가 아닌 undefined가 출력된다.


4.5 값의 할당

대입, 저장과 같은 개념이며 연산자는 =를 사용

consle.log(score); // underfind가 출력

var score = 80; // 변수 선언과 값의 할당

consle.log(score); //  80 출력

4장을 이해하기 위한 개념

  • var: 선언 단계, 초기화 단계를 한번에 진행하여 변수 선언문 이전에 변수에 접근해도 에러가 발생하지 않고 undefined를 반환하는 호이스팅이 이루어진다.
  • let: 선언 단계, 초기화 단계가 분리되어 진행 돼, 초기화 이전에 변수에 접근하려 할 시 참조에러가 발생한다. 스코프의 시작 지점부터 초기화 시작지점까지의 구간을 일시적 사각지대(Temporal Dead Zone)이다.
  • const: 상수 개념으로 값의 재할당이 불가능하다.
profile
킵고잉

0개의 댓글