컴퓨터를 공부하고자 마음먹은지 N일차

[194일차]js closure 본문

📒Javascript

[194일차]js closure

졸린새 2021. 3. 26. 17:40
728x90

closure함수?

closure를 MDN에서 설명하기를 함수와 함수가 선언된 어휘적 환경의 조합이라고 설명한다.
클로져 함수는 쉽게 말해서 외부환경을 기억하고 참조하는 내부함수라고 대답할수 있겠다.
어떻게 함수는 외부환경을 참조할까?

함수가 실행될때 일어나는일

실행컨텍스트가 만들어진다.

함수가 실행이 된다면 즉시 자기 몸속(?)에 있는 코드들을 실행시킬 환경을 생성한다.

활성객체와 스코프체인 이 만들어진다.

실행 컨텍스트가 생겨 난 후 자신이 받은 인자와 , 지역변수등을 담아놓는 활성객체를 생성한다.
그와 동시에 스코프체인을 만든다. 스코프 체인은 유효범위의 정보들을 연결리스트로 담아놓는다. (외부컨텍스트를 참조할 때 활용함)

그 안에 내부 함수가 실행되면서

내부 함수 또한 스코프체인에 현재 실행컨텍스트를 체인에 추가한 후,
활성 객체를 생성한다.
여기서 내부함수의 컨텍스트에서 찾을 수 없을때,
연결리스트를 타고 차례대로 참조할 값을 찾는다.
따라서 스코프체인을 통해 기억된 실행컨텍스트들을 참조해서 외부환경을 참조한다고 할수있겠다!

언제 활용했는가?

백준문제풀때 Input값을 online함수 외부에다 선언해놓고 활용했는데,
사실 이외에도 숨쉬듯 이러한 이점을 활용을 많이한다고 할 수 있다.

Comments