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

둡둡·2023년 12월 29일

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

  • 변수(variable)는 하나의 값을 저장하기 위해 확보한 메모리 공간 또는 식별할 수 있는 이름
  • 애플리케이션은 데이터를 입력받아(input) 처리하고 그 결과를 출력하는(output) 데이터 관리가 핵심
    • 컴퓨터는 CPU로 연산하고, 메모리로 데이터 기억
    • 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체
    • 컴퓨터는 메모리 셀의 크기(1바이트 단위)로 데이터 처리
    • 각 셀은 고유의 메모리 주소를 가짐
  • 연산된 값을 재사용할 수 있도록 메모리 공간, 즉 변수에 저장함
    • 할당(assignment, 대입, 저장): 변수에 값을 저장
    • 참조(reference): 변수에 저장된 값을 불러옴
    • 변수 이름을 통해 매핑된 메모리 공간에 접근하여 저장된 값을 사용함

4.2. 식별자

  • 식별자 (identifier): 데이터를 식별할 수 있는 고유한 이름
  • 식별자는 값이 아니라 메모리 주소를 기억
  • 변수, 함수, 클래스 등의 이름이 모두 식별자

4.3. 변수 선언

  • 변수 선언이란 값을 저장하기 위해 메모리 공간을 확보하고 메모리 공간의 주소와 연결하여 사용할 수 있는 변수를 생성하는 것
    • var, let, const 사용
    • 선언 단계: 변수 이름을 등록하고 자바스크립트 엔진에 변수의 존재를 알림
    • 초기화 단계: 메모리 공간 확보하고 최초로 값을 할당 (var 키워드 변수는 undefined 할당)

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

  • 모든 선언문(변수, 함수 등)은 런타임 이전에 먼저 실행 후 런타임 실행
  • 호이스팅(hoisting): 선언문이 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 고유의 특징

4.5. 값의 할당

  • 할당(assignment): 할당 연산자 '=' 사용

4.6. 값의 재할당

  • 재할당: 변수에 기존 저장된 값을 버리고 새로운 값을 저장
  • 상수(constant)는 재할당 불가

4.7. 식별자 네이밍 규칙

  • 특수문자 제외한 문자, 숫자, 언더스코어(_), 달러($) 사용
  • 숫자로 시작은 허용하지 않음
  • 예약어는 사용할 수 없음 (await, async, catch 등)
  • 알파벳 외 문자는 권장하지 않음
  • 네이밍 컨벤션
    • 카멜 케이스: 일반적으로 변수, 함수
    • 파스칼 케이스: 생성자 함수, 클래스명

[출처] 모던 자바스크립트, Deep Dive

profile
괴발개발라이프

0개의 댓글