클로저

Hong's·2024년 5월 8일

자바스크립트 및 CS

목록 보기
12/13

오늘은 클로저에 대해 내용 정리를 하려고합니다. 스코프에대해 공부를 하면 클로저 내용도 따라오기 때문에 클로저에 대해 알아봅시다.

클로저

클로저는 함수와 함수가 선언된 어휘적 환경(Lexical Environment)의 조합입니다.
즉, 내부함수가 외부함수를 접근할 수 있음 전역변수를 사용하지 않고 함수 밖에서 해당 변수에 접근 할 수 있게 도와줍니다.

렉시컬 환경이 뭔지 이해가 가지 않습니다 말도 어렵고요 좀 쉽게 설명을 해보자면

코드를 보시면 inner 함수가 정의된 위치에 따라 참조하는 q값이 달라지는 것을 확인 할 수 있습니다.
이유는 자바스크립트는 정적 스코프를 따르는 언어입니다. 정적 스코프는 함수가 선언된 위치에 따라 상위 스코프가 달라집니다. 즉 어디에서 함수를 정의했는지에 따라 상위 스코프가 결정됩니다.

이 코드를 보면 "내부함수가 외부함수를 접근할 수 있음 전역변수를 사용하지 않고 함수 밖에서 해당 변수에 접근 할 수 있게 도와줍니다." 이 내용을 이해할 수 있습니다.

inner함수가 내부 함수에서 외부 함수로 지역 변수 접근을 했기 때문에 렉시컬환경은 사라지지 않습니다.

장점

  1. 전역변수 줄이기 가능
  2. 데이터 보존 가능 - 외부 함수 실행이 끝나도 내부 변수 사용가능 하기 때문
  3. 비슷한 코드로 재사용성을 높힌다.
  4. 캡슐화 - 여러개의 함수를 return시켜 사용함.
profile
이것저것 공부 이야기

0개의 댓글