js - 클로저 (수정)

박제영·2022년 8월 11일
0

js

목록 보기
3/3

클로저 - 핵심은 레퍼런스 카운팅

어떤 함수A에서 선언한 변수temp를 참조하는 내부 함수 B를 외부로 전달할 경우
A의 실행 컨텍스트가 종료된 이후에도 변수 temp가 사라지지 않는 현상
그러니까 내부함수에서 외부 함수에 선언된 변수를 참조하는데 이 내부 함수를 외부에 반환해서 사용하고 있으니까
레퍼런스 카운팅 증가해서 이 변수가 gc대상이 안되고 남아있는 것

클로저의 장점 - 은닉화
외부에서 레퍼런스 카운팅으로 물고있는 변수를 조작할 수 없다 내부 함수에서 조작 가능
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
이전의 생각 (다소 부족하게 알고 있었을 때)

내부함수에서 외부 함수 변수에 접근 할수잇는게 클로저라고 알고 있었는데
잘못알고있었다

예를 들면 외부함수에 선언된 변수가 있는데 참조를 안하면 그것도 클로저일까?
레퍼런스 카운팅으로 참조안하면 메모리 정리되니까
그런 경우도 클로저라 부를 수 잇는 걸까?

그래서 확인해봣다

참조할 수 있는 변수 없어도 클로저라고 찍힌다

라고 생각했는데 클로저에 대한 정의를 다시 공부해보니 클로저의 정의를 다시 해야할 것 같다
그렇다면 브라우저에 찍히는 클로저는 무엇일까..?

profile
개발 도중 만난 문제 해결을 서술하거나 기록 및 개인의 생각을 정리한 블로그

0개의 댓글