YooBlog

Javascript Variable

Javascript·2023-09-12
post-thumbnail

 

변수

💡
이름이 부여된 메모리 공간
  • 이 메모리 공간에는 변수의 값 또는 참조가 저장됩니다.
  • 변수 이름은 해당 메모리 공간을 가리키고(참조하고), 이를 통해 자바스크립트 엔진이 메모리 공간에 저장된 값을 읽거나 수정할 수 있습니다.
 
변수 선언
  • 이름을 지정
  • 메모리에 저장할 공간을 확보
 
변수 초기화
  • 선언하면서 값을 할당하는 것
  • 최초로 값을 할당하는 단계
 
변수 할당
  • 이미 선언된 변수에 값을 대입하는 것
  • 정적 데이터: 값
  • 동적 데이터: 참조값
 

원시타입(Primitive Types)

stored directly in the "Stack", where it is accessed from
💡
스택에 값이 직접 저장되며, 스택에서 접근 가능하다.
  • number
  • string
  • boolean
  • null
  • undefined
  • Symbol
  • Bigint
 

객체 타입(Reference Types)

Stored in the heap and accessed by reference
💡
힙에 저장되며 참조를 통해 접근 할 수 있다.
  • 객체 타입은 참조값을 가진다.
  • objects
  • arrays
  • functions
 
 
notion image
  • 몸이 작으면 stack에 바로 몸이 크면 다른 동네(heap)로 보내고 찾는 사람이 있으면 그 동네 찾아가는 주소를 줌
 

let vs const vs var

let
const
var
도입시기
ES6
ES6
ES5
스코프
블록스코프
블록스코프
함수 스코프
초기화 이전에 참조 가능 여부
X
X
O
재할당
O
X
O
초기화 이전에 참조 가능 여부
var
  • 선언과 초기화가 분리되어 있기 때문에, 변수를 선언하기 전에도 접근이 가능하며 undefined로 초기화됩니다.
let, const
  • TDZ이 적용되어 초기화 전에 변수에 접근하려고 하면 에러가 발생합니다.
  • TDZ(Temporal Dead Zone): 변수가 선언되고 초기화되기 전까지의 영역
 
재할당
const
  • 변수의 값은 재할당할 수 없는 상수
  • 객체나 배열과 같은 참조형 데이터 타입의 경우, 객체의 속성이나 배열의 요소는 수정 가능
 

var 더이상 쓰면 안되는 이유

💡
중복 선언 가능, let, const와 호이스팅, 스코프 동작 과정도 달라서 예상치 못한 결과가 나올 수 있어 사용하지 않는 것이 좋습니다.
  • var 다른 키워드와의 차이점
    • 함수 스코프
    • 변수가 선언되기 전에도 참조될 수 있음
 

유현지

안녕하세요

홈으로