React/개념
const /let
hihijh826
2025. 3. 13. 10:38
728x90
반응형
SMALL
JavaScript 변수 선언 방식 정리
변수 선언 키워드
let
- 용도:변할 수 있는 값을 선언할 때 사용
- 블록 내부에서만 유용
- 특징: 재할당 가능, 재선언 불가능
- 예시: let count = 1; count = 2; (유효)
const
- 용도: 변경되지 않는 상수나 재할당이 필요 없는 변수에 사용 (변하지 않는 값을 선언할 때 사용)
- 블록 내부에서만 유용
- 특징: 재할당 불가능, 재선언 불가능
- 참조 타입: 객체나 배열의 내부 값은 변경 가능하지만 참조 자체는 변경 불가
- 예시: const PI = 3.14; (재할당 시 오류)
var (레거시)
- 용도: ES6 이전의 변수 선언 방식
- 특징: 재할당 가능, 재선언 가능, 함수 스코프
- 단점: 블록 스코프를 무시하여 예상치 못한 동작 발생 가능
예시 1 ) 유효성 검사에서의 let / const
let response = await api(
data,
isLoggedIn
);
let retryCount = 0;
const maxRetries = 10;
// //에러시 실행
while (
retryCount < maxRetries &&
(!response.response ||
!response.response.hasOwnProperty("answer") ||
!response.response.answersssss)
) {
response = await api(
data,
isLoggedIn
);
retryCount++;
}
if (retryCount >= maxRetries) {
setShowErrorPopup(true);
return;
}
- let으로 작성해야 유효성 검사를 할 수 있음
- const로 작성시 const는 변하지 x
예시2 )
// ... existing code ...
let response = await InterviewXPersonaInterviewModeratorRequest(data, isLoggedIn);
let questionList = response.response; //응답 반환하는 부분 (질문 받아옴)
let retryCount = 0;
const maxRetries = 10;
while (
retryCount < maxRetries &&
(!response || !response.response || response.response.length !== 5)
) {
// 페르소나 인터뷰 생성 API 수정 예정
response = await InterviewXPersonaInterviewModeratorRequest(data, isLoggedIn);
retryCount++;
questionList = response.response;
}
// ... existing code ...
- > response 변수는 let으로 선언되었는데, 이는 while 루프 내에서 값을 재할당해야 하기 때문.
- const로 선언된 변수는 재할당이 불가능하므로, API 호출을 반복하면서 응답을 업데이트해야 하는 이 상황에서는 let 키워드가 적합
- 마찬가지로 questionList와 retryCount도 값이 변경되어야 하므로 let으로 선언
- 특히 retryCount는 루프가 반복될 때마다 증가해야 하고, questionList는 새로운 응답에 따라 업데이트되어야 함
반면 maxRetries는 상수 값으로 루프 내에서 변경되지 않기 때문에 const로 선언
스코프와 호이스팅
블록 스코프 (Block Scope)
- 정의: 중괄호 {} 내에서만 변수가 유효한 범위
- JavaScript에서 블록은 if문, for문, while문, 함수 등의 중괄호로 둘러싸인 코드 영역
- 적용: let과 const는 블록 스코프를 따름
- 예시:
{
const x = 10; // 블록 내에서만 접근 가능
let y = 20; // 블록 내에서만 접근 가능
var z = 30;
}
// x와 y는 여기서 접근 불가
// console.log(x); // 오류: x는 정의되지 않음
// console.log(y); // 오류: y는 정의되지 않음
console.log(z); // 30 (var는 블록 스코프를 무시)
호이스팅 (Hoisting)
- 정의: 변수와 함수 선언이 코드 실행 전 스코프 최상단으로 끌어올려지는 현상
- var 호이스팅: 선언과 동시에 undefined로 초기화됨
console.log(a); // undefined (오류 없음)
var a = 5;
console.log(a) // 5
- let/const 호이스팅: 선언은 호이스팅되지만 초기화는 원래 위치에서 이루어짐
// console.log(b); // ReferenceError
let b = 5;
// console.log(c); // ReferenceError: Cannot access 'c' before initialization
const c = 10;
console.log(c); // 10
권장 사항
- 기본적으로 const를 사용하여 변수를 선언
- 값이 변경되어야 하는 경우에만 let 사용
- var 사용은 지양 (예상치 못한 동작 방지)
[Javascript] var, let, const 차이와 사용법
[Javascript] var, let, const 차이와 사용법
JavaScript를 처음 배우거나 코드를 작성하다 보면 var, let, const라는 키워드가 자주 등장합니다.이 세 가지 키워드는 모두 변수를 선언하는 데 사용되지만, 각각의 특성과 사용 상황이 다릅니다.이
likedev.tistory.com
728x90
반응형
LIST