PromleeBlog
sitemap
aboutMe

posting thumbnail
자바스크립트 클로저, 호이스팅, 버블링
A Complete Guide to JS Closures, Hoisting, and Bubbling

📅

🚀

들어가기 전에 🔗

이번 시간에는 자바스크립트의 깊은 곳으로 함께 여행을 떠나보려 합니다.
자바스크립트는 배우기 쉬운 언어처럼 보이지만, 그 내부에는 독특하고 강력한 동작 원리들이 숨어있습니다.
오늘은 그중에서도 개발자의 이해도를 가늠하는 척도로 자주 사용되는 세 가지 핵심 개념,
클로저(Closure), 호이스팅(Hoisting), 그리고 이벤트 버블링(Event Bubbling)
에 대해 알아보겠습니다.

🚀

1. 클로저 (Closure): 기억하는 함수 🔗

클로저는 많은 신입 개발자들이 가장 어려워하는 개념 중 하나입니다.
하지만 그 본질은 생각보다 간단합니다.

클로저
란,
함수가 자신이 생성될 때의 환경(스코프)을 기억하여, 그 환경 밖에서 호출될 때에도 기억해 둔 환경의 변수들에 접근할 수 있는 현상
을 말합니다.

🚀

2. 호이스팅 (Hoisting): 선언을 끌어올리다 🔗

자바스크립트 엔진은 코드를 실행하기 전에, 코드에 있는 모든 변수와 함수의
선언
을 각 스코프의 최상단으로 끌어올리는 것처럼 동작합니다.
이것을
호이스팅
이라고 부릅니다.

🚀

3. 이벤트 버블링 (Event Bubbling): 거품처럼 올라오는 이벤트 🔗

이벤트 버블링은 HTML 요소에서 이벤트가 발생했을 때, 그 이벤트가
해당 요소부터 시작하여 부모 요소를 따라 DOM 트리 최상단까지 차례대로 전파되는 현상
을 말합니다.
Closure, Hoisting, Event Bubbling
Closure, Hoisting, Event Bubbling

🚀

주요 면접 예상 질문 🔗

이 세 가지는 자바스크립트 개발자의 기본기를 확인하는 최고의 질문 소재입니다.

1. 클로저란 무엇이며, 어떤 경우에 사용될 수 있나요? 🔗

개념과 함께 실용적인 활용 사례를 설명하는 것이 중요합니다.
클로저는 함수가 자신의 렉시컬 스코프를 기억하여, 외부에서 호출될 때도 내부 변수에 접근할 수 있는 함수입니다.
이를 통해
전역 변수의 사용을 줄이고 데이터를 은닉
하여, 외부로부터의 의도치 않은 변경을 막는
private
변수처럼 활용할 수 있습니다.
또한, 함수가 호출될 때마다 독립적인 상태를 유지하는
상태 저장 카운터나 모듈 패턴
등을 구현하는 데 사용될 수 있습니다.

2. 호이스팅이란 무엇이며, varlet의 호이스팅 동작 차이를 설명해주세요. 🔗

단순히 '끌어올린다'를 넘어, 초기화 과정의 차이를 설명해야 합니다.
호이스팅은 자바스크립트 엔진이 변수와 함수의 선언을 스코프 최상단으로 옮기는 것처럼 처리하는 동작을 말합니다.
var로 선언된 변수는 호이스팅되면서 undefined로 초기화되기 때문에, 선언문 이전에 접근해도 오류 없이 undefined를 반환합니다.
반면, letconst는 선언만 호이스팅될 뿐 초기화되지 않아, 선언문 이전에 접근하면
일시적 사각지대(TDZ)
에 의해 참조 에러가 발생합니다.

🚀

결론 🔗

오늘은 자바스크립트의 깊은 곳에 숨어있는 세 가지 핵심 원리에 대해 알아보았습니다.

참고 🔗