티스토리 뷰

반응형

✅ 압박면접 대응 시리즈 2편: 자바스크립트 클로저(Closure)와 실무 활용

압박면접에서 클로저는 단골 질문입니다.
면접관은 단순히 “클로저가 뭔가요?” 수준이 아니라,
**“왜 필요하고, 실제로 어떻게 활용했는가?”**를 끝까지 파고듭니다.


📌 1. 기본 개념

**클로저(Closure)**란 함수가 선언될 때의 **스코프(lexical scope)**를 기억하여,
함수가 실행될 때 그 외부 스코프 변수에 접근할 수 있는 기능입니다.


📌 2. 코드 예시 (기본)

function counter() {
  let count = 0;
  return function () {
    count++;
    return count;
  };
}

const inc = counter();
console.log(inc()); // 1
console.log(inc()); // 2
console.log(inc()); // 3
  • inc 함수는 실행이 끝난 counter의 지역 변수 count를 계속 기억
  • 이게 바로 클로저

📌 3. 압박면접 예상 질문 & 답변 포인트

반응형

❓ Q1. 클로저가 왜 필요한가요?

  • 답변:
    • 데이터를 은닉(Encapsulation)하고,
    • 상태를 유지하면서,
    • 불필요한 전역 변수를 줄일 수 있습니다.

❓ Q2. 클로저를 남용하면 어떤 문제가 생기나요?

  • 답변:
    • 메모리 누수 위험 (불필요하게 변수 참조 유지)
    • 가독성 저하 (스코프 체인이 복잡해짐)
    • 디버깅 어려움

❓ Q3. 실무에서 클로저를 어떻게 활용했나요?

  • 답변 예시 1: Debounce/Throttle→ API 요청 과다 호출 방지 (검색창 자동완성)
  • function debounce(fn, delay) { let timer; return function (...args) { clearTimeout(timer); timer = setTimeout(() => fn.apply(this, args), delay); }; }
  • 답변 예시 2: 모듈 패턴→ 외부에서 직접 접근 불가능한 private 변수 관리
  • const UserModule = (function () { let _user = null; return { setUser: (user) => (_user = user), getUser: () => _user, }; })();

📌 4. 커리어 성장 포인트 연결하기

압박면접에서 **“경험을 곁들인 클로저 설명”**이 차별화 포인트입니다.

예시:

  • “검색창 자동완성 기능에서 debounce를 구현할 때 클로저를 사용했습니다.
    클로저를 이해하지 못했다면 메모리 누수나 예상치 못한 버그가 생겼을 겁니다.”

👉 단순 정의가 아니라 **“클로저로 문제를 어떻게 해결했는지”**가 핵심.


📌 5. 면접장에서 활용할 한 줄 정리

“클로저는 함수가 선언될 때의 스코프를 기억해서 상태를 유지할 수 있는 기능입니다.
저는 실무에서 debounce/throttle 구현에 활용해, 불필요한 API 호출을 줄이는 데 사용했습니다.”



압박면접,JavaScript,Closure,클로저,스코프,Debounce,Throttle,모듈패턴,메모리누수,면접준비


 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
글 보관함
반응형