JavaScript - 문제 미리보기

문제 464

hard
다음 코드의 실행 결과는 무엇입니까?
```javascript
var x = 1;
let y = 2;
const z = 3;

{
var x = 10;
let y = 20;
const z = 30;
console.log(x, y, z); // 블록 내부
}

console.log(x, y, z); // 블록 외부
```
A. `10, 20, 30`과 `1, 2, 3`
B. `10, 20, 30`과 `10, 2, 3`
C. `1, 2, 3`과 `10, 20, 30`
D. 에러 발생

정답: B

키워드별 스코프 동작:

1) `var`: 블록 스코프가 없음

블록 내 `var x = 10`이 전역 `var x = 1`을 덮어씀
블록 외부에서도 `x = 10`

2) `let`과 `const`: 블록 스코프를 가짐

블록 내에서만 새로운 변수 생성
블록 외부의 원래 값은 그대로 유지


결과:

1) 블록 내부: `10, 20, 30` (모두 블록 내 값)
2) 블록 외부: `10, 2, 3` (var는 변경됨, let/const는 원래 값)

💡 학습 팁

이 문제를 포함한 JavaScript 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.