JavaScript

[JS] 코딩테스트 007 - 변수선언

Irene1988 2025. 2. 16. 00:18
# 문제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을 사용하는 것이 좋은 습관이에요!

 

 

 

* 위 내용은 챗GPT 답변을 정리했습니다.