[JS] 코딩테스트 007 - 변수선언
# 문제7 : 변수명
다음 중 변수명으로 사용할 수 없는 것 2개를 고르시오.
1) age
2) Age
3) let
4) _age
5) 1age
정답) 3번, 5번
🔹 1. var, let, const 비교
키워드 | 재선언 가능 | 재할당 가능 | 블록 스코프 | 호이스팅 |
var | ✅ 가능 | ✅ 가능 | ❌ (함수 스코프) | ✅ (초기화 undefined) |
let | ❌ 불가능 | ✅ 가능 | ✅ (블록 스코프) | ✅ (초기화 안 됨) |
const | ❌ 불가능 | ❌ 불가능 | ✅ (블록 스코프) | ✅ (초기화 안 됨) |
✔️ var 대신 let과 const를 사용하는 것이 일반적입니다.
🔹 2. var 사용 시 주의점 (가급적 사용하지 않기)
✅ var는 블록 스코프가 아님! (함수 스코프)
if (true) {
var x = 10;
}
console.log(x); // 10 (블록 밖에서도 접근 가능)
✔️ var는 블록 {} 안에서 선언해도 전역처럼 동작하는 문제가 있음.
✅ var는 호이스팅됨 (초기값 undefined)
console.log(a); // undefined (에러 아님!)
var a = 5;
console.log(a); // 5
✔️ var는 선언이 끌어올려지지만(hoisting) 초기화는 안 됨 → undefined 반환
✔️ let, const는 호이스팅되지만 초기화되지 않아서 오류 발생
🔹 3. let 사용 시 주의점
✅ 같은 변수 재선언 불가
let num = 10;
// let num = 20; // ❌ 오류 발생 (재선언 불가)
✔️ var와 다르게 같은 변수 이름으로 선언 불가 → 유지보수에 유리
✅ 호이스팅 주의 (Temporal Dead Zone)
console.log(a); // ❌ ReferenceError 발생
let a = 5;
console.log(a);
✔️ let은 호이스팅되지만 초기화 전에는 접근할 수 없음 → Temporal Dead Zone(TDZ)
🔹 4. const 사용 시 주의점
✅ const는 재할당 불가
const pi = 3.14;
// pi = 3.1415; // ❌ 오류 발생 (재할당 불가)
✔️ const는 반드시 선언과 동시에 값을 할당해야 함!
✅ const로 선언한 객체는 속성 변경 가능
const person = { name: "Alice", age: 25 };
person.age = 30; // ✅ 가능 (객체 속성 변경 가능)
console.log(person); // { name: "Alice", age: 30 }
// person = { name: "Bob" }; // ❌ 오류 발생 (새 객체 할당 불가)
✔️ const로 선언해도 객체 내부 속성 변경은 가능,
✔️ 하지만 새로운 객체를 할당하는 것은 불가능.
🔹 5. 변수 선언 시 주의할 점 정리
✅ var는 지양하고, let과 const를 사용하자!
✅ 값이 변하지 않는 변수는 const, 변하는 변수는 let 사용!
✅ let과 const는 블록 스코프를 가지므로 더 안전함
✅ var는 호이스팅 문제로 예기치 않은 버그를 유발할 수 있음
✅ const로 선언한 객체는 속성 변경 가능하지만, 새로운 객체로 할당 불가능
🎯 변수 선언 추천 방식
const MAX_VALUE = 100; // 변하지 않는 상수는 const 사용
let count = 0; // 변하는 값은 let 사용
✔️ 일반적으로 const를 먼저 사용하고, 변경이 필요한 경우에만 let을 사용하는 것이 좋은 습관이에요!