Muscardinus

Execution Context 본문

FrontEnd/JavaScript Basics

Execution Context

Muscardinus 2020. 12. 15. 23:36
728x90

Execution Context (실행 Context)

JS는 항상 Execution Context 내에서 실행된다. Execution Context는 쉽게 말해서, 당신의 코드가 실행되고 있는 현재 환경을 말한다. JS에는 2가지(Global, Functional) Execution Context가 존재한다. 그리고 각각에는 두개의 단계로 이루어져있다. Creation과 Executing Phase이다. 

Global Execution Context

Creation Phase

  1. Global Object 생성
  2.  this keyword를 global에 초기화한다

Executing Phase

  1. Variable Environment 생성 - var 변수와 function들을 위한 memory 공간 할당
  2. var 변수들을 undefined로 선언
this;
window;
this === window;
// Window {...}
// Window {...}
// true

 

Functional Execution Context

함수가 호출 될 때만, Functional Execution Context가 생긴다.

 

Creation Phase

  1. arguments 객체가 생성된다
  2. this가 초기화된다. (지정된 값이 없으면 global object로 지정된다)

Executing Phase

  1. Variable Environment 생성 - var 변수와 function들을 위한 memory 공간 할당
  2. var 변수들을 undefined로 선언
function showArgs(arg1, arg2) {
  console.log("arguments: ", arguments);
  console.log(Array.from(arguments));
}

showArgs("hello", "world");
// arguments: { 0: 'hello', 1: 'world' }
// [ 'hello', 'world' ]

function showArgs2(...args) {
  console.log("arguments: ", args);
  console.log(Array.from(arguments));
  return `${args[0]} ${args[1]}`;
}

showArgs2("hello", "world");
// arguments: [ 'hello', 'world' ]
// [ 'hello', 'world' ]
// hello world

 

 

728x90

'FrontEnd > JavaScript Basics' 카테고리의 다른 글

Lexical Environment  (0) 2020.12.16
Hoisting  (0) 2020.12.16
Static Vs Dynamic Typed  (1) 2020.12.15
Type Coercion  (0) 2020.12.15
JS Types  (0) 2020.12.15
Comments