JS Closure

진성·2022년 4월 13일
0

자바스크립트

목록 보기
12/23

자바스크립트에는 클로저(Closure)라는 것이 있다.
클로저라는 단어는 단어 자체 의미로 폐쇄라는 의미를 지니고 있다.
자바스크립트에 클로저 또한 유사한 의미이다.

  • 자바스크립트의 클로저란, 함수가 선언될(혹은 생성될) 당시 주변 환경과 함께 갇히는 것을 의미한다.

함수가 선언될 당시가 의미하듯, 클로저는 함수가 선언되는 주변 환경과 관련하여 생성되는 개념이다.
실행되는 장소나 시점은 관계가 없다.

function aaa() {
	function bbb() {
    	console.log("Hellow World")
    }
  bbb()
}

aaa() // "Hellow Word"

위에 코드를 보면 aaa()를 실행하게 되면 aaa()가 포함하고 있는 bbb()가 실행이 되게 된다.

function aaa() {
  const str1 = "Hellow";
  const str2 = "World";
  
	function bbb() {
    	console.log(str1 + " " + str2)
    }
  return bbb
}

const ccc = aaa()

ccc()  // "Hellow Word"

위 코드 또한 마찬가지로 변수ccc()가 가르키게 되는 것이 함수 bbb()가 되는 것이다.
이것들이 클로저의 기능이다.

자바스크립트의 함수는 선언이 될 때 클로저가 형성이 되어 주변 환경을 기억하게 된다.
aaa()함수가 실행이 될 때 변수가 선언이 되고 함수bbb()또한 생성이 됬다.
이때 함수bbb()가 선언될 당시 주변환경을 기억하게 된다.

즉 클로저는 함수가 선언이 되고 선언된 함수안에 클로저를 형성하게 된다.

profile
풀스택 진행중...

0개의 댓글