[자바스크립트 정리] 실행 컨텍스트1. hoisting

Kyungoh Kang·2021년 1월 24일
0

javascript 정리

목록 보기
2/7

실행 컨텍스트

  1. 실행 컨텍스트란 어떤 코드를 실행하기 위해 필요한 환경의 정보들을 모아놓은 객체이다.

  2. 실행 컨텍스트는 코드가 실행될 때 (콜 스택에 저장될 때)VariableEvironment, LexicalEnvironment, ThisBinding에 대한 정보들을 모아놓는다.

    • VariableEnvironment = 변수명, 선언된 함수의 함수명, 매개변수명 등을 수집한다. 초기 실행 시 수집한 상태를 유지한다.
    • LexicalEnvironment = variableEnvironment와 같은 정보를 수집하지만 함수가 실행되며 변경되는 사항들 또한 수집한다.
    • ThisBindig = this에 대한 정보를 수집한다.

Hoisting

  1. 호이스팅은 실행 컨텍스트의 이해를 돕기 위해 만든 '추상적 개념'이다. (실제 동작 방법이 아님)

  2. 호이스팅이란 함수가 실행될 때 LexicalEnviroment를 위로 끌어 올려주는 개념이다.

const function a () {
let a = 1;
  
  console.log(a);
  
  let a;
  
  console.log(a);
  
} ///hoisting 이전

const function a () {
 let a;
  
  a= 1;
  
  console.log(a);
  console.log(a);
} //hoisting 이후
  • 호이스팅 개념을 몰랐다면 첫번째 함수에서 두번째 콘솔의 결과를 undefined로 생각할 수 있지만 아래 함수와 비슷하게 동작하기 때문에 두개의 콘솔 모두 1이 출력된다.
  1. 호이스팅은 lexical environment, 즉 매개변수명, 변수명, 함수명 등 이름만 가지고 위로 끌어올린다는 것을 알 수 있다. 이외의 코드들은 작성된 자리에 그대로 놓아두기 때문에 위와같이 동작한다는 것을 알 수 있다.

scope, scope chain

this

0개의 댓글