JS DeepDive 04장 변수

한칙촉·2024년 1월 15일

변수

: 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름

  • 프로그래밍 언어에서 값을 저장하고 참조하는 메커니즘
  • 값의 위치를 가리키는 상징적인 이름
  • 값이 저장된 메모리 공간의 주소로 치환되어 실행
  • 할당 = 변수에 값을 저장 / 참조 = 변수에 저장된 값을 읽어들임

변수가 필요한 이유?

  1. 메모리 주소를 통해 값에 직접 접근 → 치명적 오류 발생 가능성 높음
  2. 개발자가 직접 메모리 주소를 통해 값을 저장 및 참조할 필요 X

식별자

: 어떤 값을 구별해서 식별할 수 있는 고유한 이름 (ex. 변수명, 함수명 ...)

  • 값이 아닌 메모리 주소를 기억 → 메모리 주소에 붙인 이름
  • 선언에 의해 자바스크립트 엔진에 식별자의 존재 알림

변수 선언

: 값의 저장을 위한 메모리 공간 확보 + 변수 이름과 확보된 메모리 공간의 주소 연결

  • 변수 선언 = 변수 생성
  • 메모리 공간은 확보가 해제되기 전까지는 누구도 확보된 메모리 공간을 사용할 수 없도록 보호됨

var 변수

= 함수 레벨 스코프 지원 → 의도치 않은 전역 변수 선언

var score; // 변수 선언

변수 선언 단계

  1. 선언 단계 = 변수의 이름을 등록하여 변수의 존재를 알림
  2. 초기화 단계 = 값의 저장을 위해 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화
  • var 키워드 = 선언 단계와 초기화 단계가 동시에 진행
  • 확보된 메모리 공간에 undefined라는 값이 암묵적으로 할당되어 초기화

변수 호이스팅

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

console.log(score); // undefined

var score;
  • 변수 선언이 소스코드가 한 줄씩 순차적으로 실행되는 시점, 즉 런타임이 아닌 그 이전 단계에서 먼저 실행
  • 변수 선언을 포함한 모든 선언문을 소스코드에서 찾아 먼저 실행 → 평가 과정이 끝난 후 변수 선언을 포함한 모든 선언문을 제외하고 소스코드를 한 줄씩 순차적 실행

값의 할당

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

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

변수 선언 = 소스코드가 순차적으로 실행되는 시점인 런타임 이전에 먼저 실행
값의 할당 = 소스코드가 순차적으로 실행되는 시점인 런타임에 실행

console.log(score); // undefined

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

console.log(score); // 80
console.log(score); // undefined

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

console.log(score); // 80

값의 재할당

var score = 80; // 변수 선언과 값의 할당
score = 90; // 값의 재할당
  • 메모리 공간을 지우고 새롭게 저장하는 것이 아닌 새로운 메모리 공간을 확보하고 그 공간에 값을 저장
  • 상수 = 단 한 번만 할당할 수 있는 변수 = const 키워드

식별자 네이밍 규칙

  • 특수 문자를 제외한 문자, 숫자, 언더스코어, 달러 기호 포함 가능
  • 특수 문자를 제외한 문자, 언더스코어, 달러 기호로 시작해야 함
  • 숫자로 시작하는 것은 허용하지 않음
  • 예약어는 식별자로 사용할 수 없음
profile
빙글빙글돌아가는..

0개의 댓글