[코어 자바스크립트] 🧫 식별자와 변수

  • 변수는 변할 수 있는 데이터
  • 식별자는 어떤 데이터를 식별하는 데 사용하는 이름, 즉 변수명

변수 선언시 컴퓨터가 메모리 영역에서 수행하는 작업

  • “변할 수 있는 데이터를 만들건데, 이 데이터의 식별자는 a로 하자!”
var a
  • 메모리에서 비어있는 공간 하나 확보
  • 공간의 이름(식별자)를 a라고 지정

데이터 할당

var a
a = 'abc'
  • a라는 이름을 가진 주소에 문자열 ‘abc’를 직접 저장하지 않음
  • 데이터를 저장하기 위한 별도의 메모리 공간을 확보해서 ‘abc’ 저장
  • 그 주소를 변수 영역에 저장하는 식

데이터 할당의 전체 흐름

  • 변수 영역에서 빈 공간 확보
  • 확보된 공간의 식별자를 a로 지정
  • 데이터 영역의 빈 공간에 문자열 ‘abc’ 저장
  • 변수 영역에서 a라는 식별자 검색
  • a라는 식별자를 가진 공간에 문자열이 저장된 주소 대입

직접 대입하지 않고 한 단계를 더 거치는 이유

  • 데이터 변환을 자유롭게 할 수 있게 함
  • 메모리를 더욱 효과적으로 관리하기 위한 고민의 결과

문자열 데이터와 메모리

  • 자바스크립트는 문자열 데이터에 특별히 정해진 규격이 없음
  • 미리 확보된 공간 내에서만 데이터 변환을 할 수 있다면?
  • 변환한 데이터를 다시 저장하기 위해서는 “확보된 공간을 변환된 데이터 크기에 맞게 늘리는 작업”이 선행되어야 함
  • 즉, 컴퓨터가 처리해야 할 연산이 많아짐
  • 따라서 효율적으로 문자열 데이터의 변환을 처리하려면 변수와 데이터를 별도의 공간에 나누어 저장
  • 변수와 데이터의 영역을 분리하면 중복된 데이터에 대한 처리 효율이 높아짐

문자열 데이터의 변환

  • 기존 문자열에 어떤 변환을 가하든 상관 없이 무조건 새로 만들어 별도의 공간에 저장
var a
a = 'abc'
a += 'def'
  • 데이터 영역에 ‘abcdef’라는 문자열을 새로 만들어 별도의 공간에 저장
  • 변수 영역에서 a라는 식별자 검색
  • 그곳에 ‘abcdef’의 주소를 연결

Written by@thumbsu
프론트엔드 개발자 엄지수 입니다.

GitHubTwitterLinkedIn