[JavaScript] 변수 (1)

21.05.27


책 모던 자바스크립트 Deep Dive를 정리했습니다.


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

  • 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념

  • 좋은 이름, 가독성이 높은 변수 이름은 협업과 품질 향상에 도움을 준다.


CPU의 연산 결과를 재사용하고 싶다면 ?

10 + 20

위의 연산 결과인 30을 사용하고 싶다면 메모리 주소를 통해 직접 접근하는 방법 밖에 없다.

하지만 이는 굉장히 위험한 방법이다

  • 치명적인 오류 야기 가능, 따라서 JavaScript는 개발자의 직접적인 메모리 제어 허용 X

식별자

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

  • 변수 이름에 국한되지 않고 클래스, 함수 등의 이름은 모두 식별자다.

  • 식별자는 네이밍 규칙을 준수해야 한다. (후술)


변수 선언

메모리 공간을 확보하고 변수 이름과 확보한 메모리 공간의 주소를 연결해서 값을 저장할 수 있게 준비하는 것.

  • 변수를 사용하기 위해 반드시 선언이 필요하다.
    - var, const, let 키워드를 사용한다 (ES6로 const, let 도입)
  • 후술할 내용이지만 var 키워드는 여러 단점이 있다.
    가장 대표적인 것이 block-level-scope를 지원하지 않고 function-level-scope를 지원한다는 것이다.
    이로 인해 의도치 않게 전역 변수가 선언되어 부작용이 발생하기도 한다.

 var score 
 

위 변수 선언문은 이름을 등록하고 값을 저장할 메모리 공간을 확보한다.
Javascript는 엔진에 의해 undefined라는 값이 암묵적으로 할당되어 초기화되는
독특한 특징이 있다. 이로 인해 쓰레기 값으로 인한 메모리 누수로부터 안전하다.

  • 변수 선언을 선언 단계, 초기화 단계의 2단계로 나누어 수행하는데 이는 나중에 설명할 호이스팅(hoisting)과도 연관이 있으니 알아두도록 하자

  • 선언하지 않은 식별자에 접근하면 Reference Error(참조 에러)가 발생하니 주의하자.

Execution Context (실행 컨텍스트)
모든 식별자가 등록되는 곳, JS 엔진이 필요한 환경을 제공하고 실행 결과를 실제로 관리하는 영역이다.

좋은 웹페이지 즐겨찾기