: 실행할 코드에 제공할 환경 정보들을 모아놓은 객체이다.
내가 짜놓은 코드들은 Stack에 쌓이게 된다. 실행이 마치면 스택이 없어진다.
이런 stack방식으로 코드의 순서를 보장하게 된다.
var a = 1;
function outer() {
function inner() {
//코드들
var a = 3;
}
inner();
}
outer();
위의 함수가 Stack에 쌓이는 순서
: 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장(수집)된다. (= 호이스팅,뜻은 record의 수집과정)
: 식별자 정보를 수집할 때 호이스팅 개념이 나온다. 변수 저장 수집 과정을 알기 쉽게하기 위해 탄생한 가상 개념.
: 식별자 정보를 위로 끌어올리는 것
호이스팅 전
function a () {
var x = 1; //선언부: var x
console.log(x);
var x; //선언부: var x
console.log(x)
var x = 2; //선언부: var x
console.log(x);
}
예상된 출력 결과 : 1 undefined 2
호이스팅 후
function a () {
var x;
var x;
var x;
x = 1;
console.log(x);
console.log(x);
x = 2;
console.log(x);
}
출력 결과 : 1 1 1
: 모든 함수가 다 호이스팅 되는 것은 아니다.
호이스팅 전
function a () {
console.log(b);
var b = 'bbb';
console.log(b);
function b() {}
console.log(b);
}
a();
예상된 출력 결과 : undefined bbb b함수
호이스팅 후
function a () {
var b;
function b (){}
console.log(b);
b = 'bbb';
console.log(b)
console.log(b)
출력 결과 : b함수 bbb bbb
```jsx
function a () { ... }
a();
```
- 함수 표현식
```jsx
//익명함수표현식
var b = function () { ... }
b();
//기명함수표현
var c = function d () { ... }
c(); //ok
d(); //error
```
: 기명함수 표현식은 거의 안쓰인다.
오늘은 강의를 듣고 개인 프로젝트 초기 세팅을 진행하였다. 내일은 강의 반, 프로젝트 반을 진행 할 예정이다. 오늘 강의에서는 데이터 타입에 대해서와 실행 컨텍스트에 대해 공부하였다