Elice SW engineer - TIL day 14

Circlewee·2022년 4월 21일
0

Elice SW 2 TIL

목록 보기
12/31

🍑 Execution context(EC)

  • JS 엔진은 코드가 없어도 실행 환경(execution context)을 초기화한다.
  • scope는 코드가 현재 실행되는 환경, 맥락(context)을 의미한다.
  • this 포인터(글로벌 스코프에서 window를 가리킴), 변수들, 스코프 체인 등이 환경에 포함된다.
  • function Execution context가 만들어지면 전에 실행되던 context는 scope chain에 들어간다.

🍑 This가 가리키는 것

🍉 dynamic binding

  1. 함수 호출: 함수를 직접 호출한다.
  2. 메서드 호출: 객체의 method를 호출한다.
  3. 생성자 호출: 생성자 함수를 호출한다.
  4. 간접 호출: call, apply 등으로 함수를 간접 호출한다.
  • 이러한 호출의 여러 경우에서 this가 환경에 따라 바뀌는 것을 동적 바인딩(dynamic binding)이라한다.
  • bind, apply, call 등으로 this가 가리키는 것을 조작할 수 있다.
const o = {
  name: 'park',
  printName: function() {
    console.log("My name is ", this.name);
  }
}

o.printName(); // My name is park
setTimeout(o.printName(), 10); // My name is undefined
setTimeout(o.printName.bind(o), 20); // My name is park
  • bind()를 통해 this를 객체 o로 설정한 것이다.

  • 화살표 함수의 this는 호출된 함수를 둘러싼 execution context를 가리킴(this 조작 불가능)
    일반 함수의 this는 새롭게 생성된 execution context를 가리킴(bind, call등으로 조작 가능)

🍉 Javascript Closure

  • 일급 객체: 다른 변수처럼 대상을 다룰 수 있는 것
    JS에서 함수는 일급 객체에 속한다.

    const func = () {return 1;}
    console.log(func); // [function: func]
    
  • 함수가 생성될 때, 함수 내부에서 사용되는 변수들이 외부에 존재하는 경우 그 변수들은 함수의 스코프에 저장된다.
    함수와 함수가 사용하는 변수들을 저장한 공간클로저(closure)라 한다.

profile
공부할 게 너무 많아요

0개의 댓글

관련 채용 정보