클로저 - Closure

마데슾 : My Dev Space·2019년 9월 21일
0

[CODESTATES]PRE

목록 보기
2/19
  • 발상의 전환을하면 이해가 쉬울 것 이다.
  function foo() {
    return function() {

    }
  }
  function outerFn() {
    let outerVar = 'outer';
    console.log(outerVar);

    function innerFn() {
      let innerVar = 'inner';
      console.log(innerVar);
    }
    return innerFn;
  }
  let globalVar = 'global';
  outerFn()()
  // outer
  // inner
  let innerFn = outerFn(); // outer
  innerFn() // inner

[ function innerFn() {} => 클로저함수 ]
1. 클로저 함수는 아래의 3가지에 접근이 전부 가능합니다.

  • 지역변수(innerVar)
  • 외부 함수의 변수(outerVar)
  • 전역 변수(globalVar)
  1. 유용한 클로저 예제
    1) 커링 : 함수 하나가 n개의 인자를 받는 대신, n개의 함수를 만들어 각각의 인자를 받게 하는 방법
  // x값을 고정해놓고 재사용할 수 있다
  function adder(x) {
    function closer(y) {
      return x + y;
    }
    return closer;
  }
  adder(2)(3);
  // 5
  let add10 = adder(10);
  add10;
  /* ƒ (y) {
      return x + y;
    } */
  add10(3);
  // 13
function htmlMaker(tag) {
  let startTag = '<' + tag + '>';
  let endTag = '</' + tag + '>';
  return function(content) {
	return startTag + content + endTag;
  }
}

let divMaker = htmlMaker('div');
divMaker('hi') // "<div>hi</div>"
profile
👩🏻‍💻 🚀

0개의 댓글