[기술면접] js 실행컨텍스트

nevermind·2022년 11월 14일
0

기술면접

목록 보기
3/25
post-custom-banner

* 실행 컨텍스트

  • 실행 가능한 코드에 제공되는 환경정보를 모아놓은 객체
  • js의 동적언어로서의 동작을 이해할 수 있는 개념(this 값을 결정, 외부 환경 정보를 구성, 호이스팅을 발생시킴)
  • 컨텍스트 원칙
    • 먼저 전역 컨텍스트 하나 생성 후, 함수 호출 시마다 컨텍스트가 발생
    • 컨텍스트 생성 시 컨텍스트 안에 변수객체(arguments, variable), scope chain, this가 생성
    • 컨텍스트 생성 후 함수가 실행되는데, 사용되는 변수들은 변수 객체 안에서 값을 찾고, 없다면 스코프 체인을 따라 올라가며 서치
    • 함수 실행이 마무리되면 해당 컨텍스트는 사라짐.(클로저 제외) 페이지가 종료되면 전역 컨텍스트가 사라짐.

* 함수 실행 컨텍스트

  • 전역 실행 컨텍스트가 생성된 후 함수호출시마다 함수 컨텍스트가 새롭게 작성됨

* this의 호출방식

  • 함수호출방식에 의해 this가 결정됨
  • 전역범위에서의 this는 window라는 전역 객체를 가리킴
  • 함수를 어떤 객체의 메소드로 호출하면 this는 그 객체를 가리킴
  • 내부함수는 메서드가 아니기에 this가 window를 향함
  • call(), apply(), bind()를 필요에 따라 사용하여 this를 바꿀수 있음

* function () {} 와 화살표 함수(const = () => {})의 차이점

  • function() {}의 함수선언은 자체적으로 this를 할당
  • 화살표 함수는 자체적으로 this가 없기에 부모 스코프의 this를 참조(정적 컨텍스트를 가진다)
    정적 컨텍스트(Lexical context)는 소스코드가 작성된 그 문맥의 실행 컨텍스트나 호출 컨텍스트에 의해 결정된다. 즉 함수가 실행된 위치가 아닌, 정의(defined)된 위치에서의 컨텍스트를 참조

* 렉시컬 스코프

  • 함수를 어디서 호출했는지가 아닌 함수를 어디서 선언했는지에 따라 결정됨

출처: https://junilhwang.github.io/TIL/Javascript/Domain/Execution-Context/#_1-%E1%84%80%E1%85%A2%E1%84%82%E1%85%A7%E1%86%B7
https://wormwlrm.github.io/2019/03/04/You-should-know-JavaScript-this.html.html

떨린다 ㅠㅠ

profile
winwin
post-custom-banner

0개의 댓글