반응형
자바스크립트의 중급 개념을 익히면 코드의 효율성을 높이고, 복잡한 로직을 이해하는 데 도움이 됩니다. 이번에는 클로저(Closure)와 즉시 실행 함수 표현식(IIFE)을 활용한 문제를 준비했습니다. 코드를 분석하고, 문제를 풀어보세요!
퀴즈를 위한 코드
const counter = (function () {
let count = 0;
return {
increment: function () {
count++;
return count;
},
decrement: function () {
count--;
return count;
}
};
})();
console.log(counter.increment());
console.log(counter.increment());
console.log(counter.decrement());
console.log(counter.count);
퀴즈 문제
- 위 코드를 실행하면 콘솔에 어떤 출력이 나올까요?
- a) 1, 2, 1, undefined
- b) 1, 2, 1, 0
- c) 1, 2, 1, 1
- d) 오류 발생
- counter.count의 값은 왜 undefined일까요?
- a) count 변수가 counter 객체의 프로퍼티가 아니기 때문
- b) count 변수가 const로 선언되었기 때문
- c) count 변수가 increment()와 decrement() 함수에서만 접근 가능하기 때문
- d) 코드에 오류가 있기 때문
정답 및 해설
1번 문제 해설 (출력 결과 예상)
console.log(counter.increment()); // 1
console.log(counter.increment()); // 2
console.log(counter.decrement()); // 1
console.log(counter.count); // undefined
- counter.increment() → count가 0에서 1로 증가하여 1 반환
- counter.increment() → count가 1에서 2로 증가하여 2 반환
- counter.decrement() → count가 2에서 1로 감소하여 1 반환
- counter.count → count는 클로저 내부 변수이므로 외부에서 직접 접근할 수 없어 undefined 반환
정답: ✅ a) 1, 2, 1, undefined
2번 문제 해설 (counter.count가 undefined인 이유)
- count 변수는 즉시 실행 함수 표현식(IIFE) 내부에서 let으로 선언되었으며, 객체의 프로퍼티로 설정되지 않았습니다.
- increment()와 decrement() 함수에서만 count에 접근할 수 있으며, counter.count로 직접 접근하는 것은 불가능합니다.
정답: ✅ a) count 변수가 counter 객체의 프로퍼티가 아니기 때문
이 문제를 풀기 위해 필요한 자바스크립트 개념
- 클로저(Closure)
- 즉시 실행 함수 표현식 (IIFE)
- 객체 리터럴과 메서드
- 변수의 스코프와 접근 제한
끝
반응형
'IT > Python Quiz' 카테고리의 다른 글
[javascript] 자바스크립트 코드 읽기 연습 - 초급 퀴즈10 (0) | 2025.02.14 |
---|---|
[javascript] 자바스크립트 코드 읽기 연습 - 초급 퀴즈9 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 초급 퀴즈8 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 중급 퀴즈5 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 중급 퀴즈4 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 중급 퀴즈3 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 중급 퀴즈1 (0) | 2025.02.14 |
[javascript] 자바스크립트 코드 읽기 연습 - 초급 퀴즈7 (0) | 2025.02.14 |
댓글