var, let, const

HAYEON KANG·2022년 4월 12일

JavaScript

목록 보기
1/2
post-thumbnail

var

  • 쓰지않는 걸 추천!!!
  • 호이스팅 시 선언 단계와 초기화 단계가 한번에 이루어짐
  • 지역변수와 전역변수의 경계가 모호
  • 같은 이름의 변수 선언 가능

호이스팅(Hoisting)이란,
var나 function의 선언문을 해당 스코프의 가장 선두로 옮긴 것과 같은 동작 특성을 뜻함


문제 1) 호이스팅시 변수의 선언과 초기화(undefined으로)를 같이 함

문제 2) 함수만 지역변수로 호이스팅이 되고 나머지는 다 전역변수로 올라옴

  • 전역변수 : 블락 밖에서 선언을 한 어디서든 쓰일 수 있는 변수
  • 지역변수 : 블락 {}안에서 선언된 변수, 블락안에서만 쓸 수 있음

문제 3) 같은 이름의 변수가 두개여도 허용

let

  • ES6 버전에서 새로 나옴
  • var의 문제점 해결
  • 호이스팅 개념 : TDZ(Temporal Death Zone)
    • a가 호이스팅으로 기억이 됨
    • 하지만, a 선언문이 나오기 전까지는 a를 사용할 수 없음
    • 일시적으로 선언전에는 죽은 존이 됨 (TDZ)
  • 선언 단계 > 초기화 단계 > 할당 단계 걸쳐 변수가 생성됨

해결 1) 호이스팅시 변수의 선언과 초기화를 따로 함

  • 선언되기 전에 해당 변수를 사용할 수 없음

해결 2) 지역변수와 전역변수의 구분이 명확

해결 3) 같은 이름의 변수가 허용하지 않음

const

  • 한번 할당하면 재할당 안됨
  • 바뀌면 안되는 고정시켜야 하는 값들을 const로 선언
  • 상수를 만드는 것

📌 자바스크립트의 호이스팅

  1. 자바스크립트 코드를 구현
  2. 코드가 실행되기 전에 자바스크립트 엔진이 선언된 변수를 먼저 조사함
  3. 선언된 변수를 메모리에 가져가 저장함
  4. 코드 실행 시 메모리에 저장된 변수를 가져가 사용

정리

  • var
    • 재선언, 재할당 가능
    • 사용하지 말 것!
  • let
    • 재할당만 가능
  • const
    • 재선언, 재할당 불가능
profile
Front Developer / Web Developer

0개의 댓글