시작 ⇒생성 단계 - 실행 컨텍스트 생성 ⇒ 실행 단계 - 변수 값 할당, 코드 실행⇒ 종료
자바스크립트 엔진 : 자바스크립트 코드를 읽어(파싱하고) 실행하는 프로그램, ex) chrome V8
Node.js 는 브라우저 이외의 환경에서 자바 스크립트 코드를 실행하도록 하는 프로그램이며 같은 코드라도 환경에 따라 다른 결과로 동작할 수 있다.
자바 스크립트 코드 실행 :
자바스크립트 엔진은 코드 실행전 실행 컨텍스트를 생성
생성 단계(변수값 선언, 단, var 변수는 undefined로 초기화) ⇒ 실행 단계(변수값 할당)
렉시컬 환경(Lexical Environment)
함수의 렉시컬 환경은 선언된 함수 환경을 의미하며 EC(excutive context)의 Variable object라고도 생각할수 있다
렉시컬 환경안에 해당 변수나 함수가 없으면 scope chain정보를 통해서 상위 scope에서 확인한다.
Hoisting은 변수가 선언된 시점보다 앞에서 사용되는 현상
var의 경우 undefined 함수는 생성단계에서 함수전체가 저장됨으로 호출 가능.
반면에 let, const 변수는 reference error로 hoisting 불가
내장객체