Posts 모던 자바스크립트 Deep Dive 4장 변수
Post
Cancel

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

모던자바스크립트 책을 여러 번 읽으면서, 각 챕터마다 간단히 정리할 수 있으면 좋겠다는 생각을 했다. 본 4장은 기본적인 내용이지만 다시 한 번 상기해보고자 한다.

4.1 변수가 필요한 이유

아무 프로그래밍 언어라도 처음 배울 때에는 변수를 빼 놓고 배우지는 않을 것이다. 그럴 만큼 변수는 프로그래밍 언어를 이용하여 개발을 하는 데 있어 정말 기초적이고 필수적인 부분이 되었다. 그런데 이 변수가 왜 필요할까에 대한 근본적인 의문을 가지게 된다면 답하기 쉽지 않다. 변수 없이는 개발이 불가능할까?

파이썬을 처음 배울 때 print() 함수만 사용하여 코딩한 적이 있을 것이다.

1
print("Hello Python!")

이런 코드 말이다. 그런데 이런 코드로는 사칙연산을 할 수도 없고 사용자가 입력받은 값에 대한 기억을 할 수도 없다.

그래서 우리는 다음과 같은 코드를 사용하곤 한다.

1
2
3
4
a = 3
b = 4
c = a + b
print(c)
  • 변수에 값을 저장하는 것을 할당(assignment), 대입, 저장이라고 한다.
  • 변수에 저장된 값을 읽어 들이는 것을 참조(reference)라고 한다.

4.2 식별자(identifier)

  • 어떤 값을 구별해서 식별할 수 있는 고유한 이름이다.
  • 식별자는 값이 아니라 메모리 주소를 기억하고 있다. 그래서 메모리 주소에 붙인 이름이라고 할 수 있다.
  • 변수 이름을 식별자라고도 하지만, 식별자라는 용어는 변수 이름에만 국한해서 사용하지 않는다. 변수, 함수, 클래스 등의 이름은 모두 식별자이다. 메모리 상에 존재하는 어떤 값을 식별할 수 있기 때문이다.

4.3 변수 선언(variable declaration)

  • 값을 저장하기 위한 메모리 공간을 확보(allocate)하고, 변수 이름과 확보된 메모리 공간의 주소를 연결(name binding) 해서, 값을 저장할 수 있게 준비하는 것이다.

  • 자바스크립트 엔진은 변수 선언을 다음과 같은 두 단계에 걸쳐 수행한다.

    1) 선언 단계 : 변수 이름을 등록해서 자바스크립트 엔진에 변수의 존재를 알린다.

    2) 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고, 암묵적으로 undefined를 할당해 초기화한다.

4.4 변수 호이스팅(variable hoisting)

  • 자바스크립트 엔진은 변수 선언이 소스코드의 어디에 있든 상관없이, 다른 코드보다 먼저 실행한다.

    1
    2
    
    console.log(score); // undefined
    var score; // 변수 선언문
    
  • 위 코드는 참조 에러(ReferenceError)가 발생하지 않고, undefined가 출력된다.

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

  • 변수 선언뿐 아니라, var, let, const, function, function*, class 키워드를 사용해서 선언하는 모든 식별자(변수, 함수, 클래스, …)는 호이스팅된다. (모든 선언문은 런타임 이전 단계에서 먼저 실행되기 때문)

This post is licensed under CC BY 4.0 by the author.

NHN 8기 Rookie 베이스캠프 2주차 회고하기

NHN 8기 Rookie 베이스캠프 3주차 회고하기

Comments powered by Disqus.

Trending Tags