Closure란 무엇인가?

YJS·2023년 11월 25일
0

🤓오늘의 공부 주제: Closure🤓

Q. Closure란 무엇인가?

A. 자바스크립트에서 클로저(Closure)는 함수와 해당 함수가 선언된 렉시컬 스코프(Lexical Scope) 간의 관계를 나타내는 개념. 클로저는 함수가 다른 함수의 내부에 정의되어 있을 때 발생하며, 외부 함수의 변수에 접근할 수 있는 함수를 말한다.

클로저의 특징:

  • 렉시컬 스코프(Lexical Scope): 클로저는 함수가 선언된 시점에서의 스코프에 대한 참조를 유지합니다. 이는 함수가 어디에서 호출되는지가 아니라 어디에 선언되었는지에 따라 변수에 접근할 수 있는지를 결정합니다.

  • 외부 변수 접근: 클로저는 자신이 선언된 함수의 외부 스코프에 있는 변수에 접근할 수 있습니다. 이는 클로저가 선언된 시점에서의 외부 변수에 대한 참조를 유지하기 때문입니다.

function outerFunction() {
  var outerVariable = "I am from outer function";

  function innerFunction() {
    console.log(outerVariable);
  }

  return innerFunction;
}

// outerFunction을 호출하면 innerFunction이 반환되고, 이때 클로저가 형성됩니다.
var closureExample = outerFunction();

// closureExample을 호출하면 outerFunction에서 선언된 outerVariable에 접근할 수 있습니다.
closureExample(); // 출력: "I am from outer function"

이 예제에서 innerFunction은 outerFunction 내에서 정의되었고, outerFunction의 변수에 접근할 수 있다. 이런식으로 클로저를 사용하면 변수를 은닉하고 보호할 수 있으며, 함수 간에 데이터를 전달하거나 상태를 유지하는 데 활용될 수 있다.

profile
우당탕탕 개발 일기

0개의 댓글