본문 바로가기
IT/Python Quiz

[javascript] 자바스크립트 코드 읽기 연습 - 중급 퀴즈2

by Echinacea 2025. 2. 14.
반응형

자바스크립트의 중급 개념을 익히면 코드의 효율성을 높이고, 복잡한 로직을 이해하는 데 도움이 됩니다. 이번에는 클로저(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);

 

퀴즈 문제

  1. 위 코드를 실행하면 콘솔에 어떤 출력이 나올까요?
    • a) 1, 2, 1, undefined
    • b) 1, 2, 1, 0
    • c) 1, 2, 1, 1
    • d) 오류 발생
  2. 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.countcount는 클로저 내부 변수이므로 외부에서 직접 접근할 수 없어 undefined 반환

정답:a) 1, 2, 1, undefined

2번 문제 해설 (counter.countundefined인 이유)

  • count 변수는 즉시 실행 함수 표현식(IIFE) 내부에서 let으로 선언되었으며, 객체의 프로퍼티로 설정되지 않았습니다.
  • increment()decrement() 함수에서만 count에 접근할 수 있으며, counter.count로 직접 접근하는 것은 불가능합니다.

정답:a) count 변수가 counter 객체의 프로퍼티가 아니기 때문


 

 

 

이 문제를 풀기 위해 필요한 자바스크립트 개념

  • 클로저(Closure)
  • 즉시 실행 함수 표현식 (IIFE)
  • 객체 리터럴과 메서드
  • 변수의 스코프와 접근 제한

반응형

댓글