자바스크립트 중급(1)<변수, 호이스팅, TDZ(Temporal Dead Zone)>

2025. 1. 24. 15:53·frontend/JavaScript

변수


let

const 

var

 

var 와 let은 크게 다르지 않음 

다른점: var는 한번 선언된 변수를 다시 선언할 수 있다.

let은 문제가 됨

var는 선언하기 전에 사용할 수 있다.

 

undefined가 출력된 이유: 선언은 호이스팅되지만 할당은 호이스팅되지 않기 때문.

let과 const도 호이스팅되긴 함.

호이스팅이란?

: 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것처럼 행동

그런데 왜 var처럼 실행되지 않고 에러를 내는걸까?

->TDZ때문. TDZ 영역에 있는 변수들은 사용할 수 없다. let과 const는 TDZ 영향을 받는다. 할당하기 전에는 사용할 수 없다. 이는 코드를 예측가능하게 하고 잠재적 오류를 줄일 수 있다. 

호이스팅은 스코프 단위로 일어남. 여기서 스코프는 함수 내부 

두번 째 age 변수가 호이스팅을 일으킴 만약 호이스팅이 일어나지 않았다면 위에 age= 30이 찍혀야함

변수 생성과정

1. 선언 단계

2. 초기화 단계

3. 할당 단계

초기화: undefined를 할당 해주는 단계

 

var는 1. 선언 및 초기화 단계, 2. 할당 단계

let은 1. 선언 단계 2. 초기화 단계 3. 할당 단계

const는 1. 선언 + 초기화 + 할당 

 

var는 함수 스코프,

let, const는 블록 스코프 

블록 스코프는 모든 코드블록 내에서 선언된 변수는 코드블록 내에서만 유효하며 외부에서는 접근할 수 없다.

코드블록 내부에서 선언한 변수는 지역변수

코드블록: 함수, if문, for문, while문 try/catch문

함수 스코프는 함수 내에서 선언한 변수만 지역변수가 됨. 

if 문 내에서 var로 선언한 변수는 if 문 밖에서도 사용이 가능. 하지만 let, const는 if문 내에서만 사용할 수 있다. 

 

var도 함수 내에서 선언되면 함수 밖에서 사용할 수 없다. 유일하게 벗어날 수 없는 스코프가 함수라고 생각하면 된다. 

 

var는 사용하지 않고 let, const 사용 권장됨.

 

'frontend > JavaScript' 카테고리의 다른 글

자바 스크립트 중급<생성자 함수>  (0) 2025.01.27
소수점 버리기 (정수 변환) 몫 구하기  (0) 2025.01.24
자바스크립트 기초(3) <함수,  (0) 2025.01.24
자바스크립트 기초(2)<기본 연산자, 비교 연산자, 조건문, 논리 연산자, 반복문, switch 문>  (0) 2025.01.23
자바 스크립트 기초(1)<변수, 자료형, 대화상자, 형변환>  (0) 2025.01.23
'frontend/JavaScript' 카테고리의 다른 글
  • 자바 스크립트 중급<생성자 함수>
  • 소수점 버리기 (정수 변환) 몫 구하기
  • 자바스크립트 기초(3) <함수,
  • 자바스크립트 기초(2)<기본 연산자, 비교 연산자, 조건문, 논리 연산자, 반복문, switch 문>
eun_log
eun_log
  • eun_log
    개발은
    eun_log
  • 전체
    오늘
    어제
    • 분류 전체보기 (75)
      • 코테 (17)
      • CS (6)
        • 자료구조, 알고리즘 (3)
        • 네트워크 (0)
        • 데이터베이스 (2)
        • 운영체제 (0)
      • frontend (32)
        • JavaScript (29)
        • html&css (1)
        • project_study (2)
      • backend (15)
        • Java (15)
      • project (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
eun_log
자바스크립트 중급(1)<변수, 호이스팅, TDZ(Temporal Dead Zone)>
상단으로

티스토리툴바