티스토리 뷰
JavaScript에서 변수 선언은 const, let, var 을 사용한다. 각각의 특징과 사용법을 초보자도 이해하기 쉽게 알아보자.
1. const : 값이 바뀌지 않을 때 사용
- 특징
- 고정된 값을 선언할 때 사용하며 한 번 선언하면 값을 바꾸거나 재선언할 수 없음
- 블록 스코프 : 중괄호
{}
안에서만 유효
- 사용법
- 변수 이름은 보통
camelCase
로 짓는다. (예:myFavoriteColor
) - 선언과 동시에 값을 지정해야 함
- 변수 이름은 보통
- 예시
const myName = "홍길동"; // 선언과 동시에 값 지정 console.log(myName); // 홍길동 myName = "김영수"; // 에러! 재할당 불가 const myName = "이영희"; // 에러! 재선언 불가
- 주의 : 객체/배열은 내부 변경 가능함
const myArray = [1, 2, 3]; myArray.push(4); // 가능! [1, 2, 3, 4] myArray = [5, 6, 7]; // 에러! 재할당 불가
- 언제 사용 ? : 값이 절대 바뀌지 않을 때 (예: 고정 상수, 설정값)
2. let : 값이 바뀔 수 있을 때 사용
- 특징
- 값을 업데이트(재할당) 할 수 있음
- 재선언은 불가능 (같은 이름으로 다시 선언 못 함)
- 블록 스코프 : 중괄호
{}
안에서만 유효
- 사용법
- 선언 후 필요할 때 값을 바꿀 수 있음
- 변수 이름은
camelCase
- 예시
let score = 100; // 선언 score = 200; // 재할당 가능 console.log(score); // 200 let score = 300; // 에러! 재선언 불가
- 언제 사용 ? : 변수 값이 바뀔 가능성이 있을 때 (예: 카운터, 상태 값)
3. var : 옛날 방식, 사용 지양
- 특징
- 함수 스코프 : 중괄호
{}
를 무시하고 함수 안에서 유효 (혹은 전역) - 호이스팅 : 선언이 코드 맨 위로 올라간 것처럼 동작 (예상치 못한 결과 가능)
- 재선언 가능 : 같은 이름으로 여러 번 선언 가능 (버그 유발 위험)
- 함수 스코프 : 중괄호
- 사용법
- 예전 코드에서 자주 보이지만, 요즘은 거의 안 써요.
- 예시
var age = 20; var age = 30; // 재선언 가능 (문제 생길 수 있음) console.log(age); // 30 console.log(x); // undefined (호이스팅 때문에 에러 안 남) var x = 5;
- 문제점 예시
for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 100); // 3, 3, 3 출력 (의도치 않음) } // let 사용하면 0, 1, 2 출력
- 언제 사용 ? : 현대 JavaScript에서는 사용하지 않는 게 좋음. const나 let으로 충분!
언제 뭘 써야 하나?
- 값이 바뀌지 않을 때 → const (예: 이름, 고정 설정값)
- 값이 바뀔 때 → let (예: 점수, 카운터)
- var는 되도록 안 쓰기 → const와 let으로 충분히 안전하고 깔끔한 코드 작성 가능
실용 예시
// const: 고정된 값
const maxAttempts = 3;
console.log(maxAttempts); // 3
// let: 값이 바뀌는 경우
let lives = 3;
lives = lives - 1; // 업데이트
console.log(lives); // 2
// var: 문제 예시 (비추천)
for (var i = 0; i < 3; i++) {
console.log(i); // 0, 1, 2
}
console.log(i); // 3 (중괄호 밖에서도 살아있음, 문제!)
결론
- 주로 const 사용 : 값 고정, 코드 안전
- 값 바뀔 때만 let 사용 : 업데이트 필요할 때
- var는 피하세요 : 예측 어려운 동작 때문에 현대 JavaScript에선 비추천
'Coding Study > Vanilla JS' 카테고리의 다른 글
JavaScript DOM 선택자 완벽 가이드 (1) | 2025.07.28 |
---|
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 버전제어
- docker container
- Selenium
- IMPORTRANGE
- 청약통장
- chromedriver버전오류
- 주택청약
- This version of ChromeDriver only supports Chrome version
- docker compose
- 오블완
- Python
- Git
- 청약제도
- 고양장항신혼희망타운
- claude desktop
- 구글시트
- MCP
- 티스토리챌린지
- 챗gpt
- 도커
- vscode 구글시트 연동
- chrome버전
- 구글API
- 구글시트연동
- GitHub
- model context protocol
- docker
- kc인증
- notebooklm
- chatGPT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함