스코프 Scope & 클로저 Closure

LOSSS·2021년 2월 4일
0

스코프

식별자의 유효 범위.

정적 스코프

자바스크립트는 정적 스코프임.
호출 스택과 상관 없이 선언 시점에 스코프를 결정함.

var a = "뚱인데요";

function say() {
  var a = "사랑해요";
  getA();
}

function getA() {
  console.log(a);
}

say(); // 뚱인데요

동적 스코프

런타임 도중에 실행 컨텍스트나 호출 컨텍스트에 의해 결정됨.

var a = "뚱인데요";

function say() {
  var a = "사랑해요";
  getA();
}

function getA() {
  console.log(a);
}

say(); // 사랑해요

클로저

함수와 렉시컬 환경 (Lexical Environment) 의 조합.
함수가 생성될 당시의 외부 변수를 기억하여
생성 이후에도 계속해서 접근이 가능함.

function makeAdder(x) {
  return function(y) {
    return x + y;
  }
}

const add3 = makeAdder(3);
console.log(add3(5)); // 8

const add2 = makeAdder(2);
console.log(add2(3)); // 5

참고
https://www.youtube.com/watch?v=tpl2oXQkGZs&ab_channel=ZeroChoTV

0개의 댓글