0. Prerequisite

변수와 데이터타입 내용 복습!

1. 데이터 타입

데이터 타입에서는 엄청 어렵거나 새로운 내용이 나오지는 않습니다. 자료형과 변수와 같은 내용정도만 다시 숙지하시고 바로 진행하셔도 좋습니다.

2. 실행 컨텍스트

01. 호이스팅은 어떤 일이 일어나는 것 일까요?

왜 호이스팅 같은 일이 일어나는걸까요? 사실 호이스팅은 "어떤일이 일어날까요? "보다는 "왜 일어날까요?"가 더 중요하다고 생각합니다. 일단은 어떤일인지만 먼저 알아보고 나머지는 책에서 찾아보죠!

02. 스코프는 무엇일까요?

스코프는 프로그래밍과 프로그래밍 언어에서 다 있는 아주 중요한 개념입니다. 이번 장의 핵심 주제를 이해하기 위해서 중요한 내용입니다. 아래 링크에 나온 내용을 모두 이해할 필요는 없고, 이런 개념이 있다는 것을 알면 좋습니다.

가장 중요한 것은 스코프에 대한 개념을 학습하는 것 과, 다른 언어의 스코프와는 무엇이 다른 것 인지를 학습하는 것 입니다. 함수가 스코프의 기준이라는것과, 함수가 선언된 위치가 중요하다는 부분을 다시보시면 좋을 것 같습니다.

03. 모든 코드는 실행 순서가 있고, 실행 컨텍스트는 그것과 관련된 것 입니다.

코드의 실행 순서를 관리하는 콜스택!

코드의 실행은 이렇게 관리됩니다. 코드 실행에 필요한 환경 정보를 "컨텍스트"라고 이름 지어서 객체로 만들어 두고 위처럼 실행 순서에 따라 콜스택에 쌓았다가, 가장 위에쌓여있는 컨텍스트와 관련 있는 코드를 실행하는 순서로 이루어집니다.

var helloWorld = function helloWorld() {
  console.log('Hello World!');
}

var helloJavascript = function hellowJavascript() {
  console.log("Hello Javascript")
}

var helloWorldAndJavascript = function hellowWorldAndJavascript() {
  console.log('==== Hello World And JavaScript 시작합니다! ====');
  helloWorld();
  helloJavascript();
  console.log('==== Hello World And JavaScript 끝났습니다! ====');
}

var helloWorldAndHelloJavascriptTwice = function helloWorldAndHelloJavascriptTwice() {
  console.log('==== Hello World And JavaScript Twice 시작합니다! ====');
  helloWorld();
  helloJavascript();
  helloWorldAndJavascript();
  console.log('==== Hello World And JavaScript Twice 끝났습니다! ====');
} 


helloWorldAndHelloJavascriptTwice();


/**
 * ==== Hello World And JavaScript Twice 시작합니다! ====
 * Hello World!
 * Hello Javascript
 * ==== Hello World And JavaScript 시작합니다! ====
 * Hello World!
 * Hello Javascript
 * ==== Hello World And JavaScript 끝났습니다! ====
 * ==== Hello World And JavaScript Twice 끝났습니다! ====
 */

03. 실행 컨텍스트는 어떻게 구성되어 있을까요?

실행 컨텍스트는 생성단계와 실행단계로 이루어져 있습니다. 그리고 두가지로 이루어져 있는데, 그건 바로 해당 스코프 안에 어떤 변수등이 있는지가 적혀있는 객체와 지금 스코프(함수) 바로 바깥이 어디인지 알려주는 참조로 이해하시면 될 것 같습니다.

Last updated