작성
·
29
0
8분즈음에 buttons 선언한 것을 주석처리하고 buttonList만 남겼는데 왜
buttons.addEventListener가 작동하는지 궁금해요
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. hotsunny님, 질문해 주셔서 감사합니다.
주석처리한 코드가 작동하는 이유는 JavaScript의 클로저 덕분일 확률이 높습니다. 클로저는 함수가 선언된 렉시컬 환경을 기억하여 함수가 호출된 이후에도 그 환경을 사용할 수 있도록 합니다. 따라서 주석 처리 전에 buttons
가 buttonList
변수에 할당이 되었다면, 이후 주석처리를 하더라도 할당된 값 자체는 이벤트 리스너가 동작하도록 남아 있을 수 있습니다.
관련 질문으로는 다음과 같은 질문이 존재합니다:
여기에서 buttonList
가 소유하고 있는 참조나 클로저가 어떤 형태로 남아있는지에 대해, 코드 구조를 이해하실 수 있도록 작은 예제를 찾아보시기를 권장드립니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.