코딩기록

TDZ) ReferenceError: Cannot access 'bucket' before initialization 본문

프론트/리액트

TDZ) ReferenceError: Cannot access 'bucket' before initialization

뽀짝코딩 2025. 7. 9. 20:31
728x90

TDZ란?

Temporal Dead Zone (일시적 사각지대) 오류

 

에러메시지 예시

ReferenceError: Cannot access 'bucket' before initialization

 

✅ 주인님의 코드 문제 요약

const bucket = { id: _bucket.id, ..._bucket.data() };

여기서 bucket은 이미 매개변수 이름으로 사용 중인데,
같은 이름으로 **지역 변수 const bucket**를 선언하면 스코프 충돌이 발생.

JS는 변수 이름이 겹치면 **"호이스팅 후 TDZ에 걸린 상태"**로 간주해서 아래 에러 발생

❗ Cannot access 'bucket' before initialization


🔍 TDZ (Temporal Dead Zone)란?

ES6부터 let이나 const로 선언된 변수는 선언되기 전에는 접근할 수 없다.
이 "접근 불가한 시점"을 **일시적 사각지대 (TDZ)**라고 부른다.


✅ 해결 방법

변수 이름이 겹치지 않도록 바꿔주면 끝.

export const addList = (list) => {
  return async function (dispatch) {
    const docRef = await addDoc(collection(db, "list"), list);
    const _list = await getDoc(docRef);
    const newList = { id: _list.id, ..._list.data() }; // ✅ 이름 변경
    console.log("newList: ", newList);
  };
};

✅ 정리

문제원인해결 방법
Cannot access 'list'... 매개변수 이름과 지역 변수 충돌 변수 이름 변경 (newList)
이건 TDZ(Temporal Dead Zone) 에러 let/const는 선언 전에 접근 불가 같은 이름 재사용 피하기
 

 

 

 

 

 

 

 

 

 

 

참고

쳇지피티

 

 

반응형
Comments