Javascript

자바스크립트 클로저란?

살다보니개발자 2022. 9. 10. 00:58

자바스크립트 클로저란

 

외부함수에서 내부함수가 선언 되었고, 내부함수가 외부함수 실행컨텍스트 내 변수값을 참조하고 있을시,

외부함수가 소멸되어도 내부함수는 클로저 스코프를 통해서 외부함수의 변수값을 계속해서 접근 할 수 있음을 의미한다.

 

function outter(){
  let text = 'hello world';  
  
  function inner(text2){        
      console.log(text + text2);
  }
  
  return inner;
}

let closure = outter();
closure('closure'); //hello worldclosure

 

inner 함수를 리턴하는 outter 함수를 변수 closure에 할당하고 closure 함수에 'closure' 라는 문자열을 인자값으로 호출했을시

 

결과값은 'hello worldclosure' 가 나온다.

 

소멸되서 접근이 불가능할줄 알았던 outter 함수의 지역변수인 text는 Inner함수의 클로저스코프에 기억이 되고 있었고 호출이 가능했던것이다.

 

 

 

 

태클은 언제나 환영입니다. 잘못된 부분이 있다면 언제든 말씀해주시면 감사하겠습니다 :)