[코어 자바스크립트] 02. 실행 컨텍스트

이번 글은 코어 자바스크립트 책의 2장(실행 컨텍스트)을 공부한 내용이다.

자바스크립트 엔진이 코드를 처리하는 과정을 통해 코드 실행 순서를 이해하고, 동적 언어로서의 성격을 파악할 수 있었다. 🤟


실행 컨텍스트란?

실행 컨텍스트 객체

environmentRecord

함수 선언문, 함수 표현식

// 함수 선언문
// 함수명 a가 곧 변수명이다.
function a() {
    /* ... */
}
a();

// 익명 함수 표현식
// 변수명 b가 곧 함수명이다.
var b = function () {
    /* ... */
};
b();

// 기명 함수 표현식
// 변수명은 c, 함수명은 d이다.
var c = function d() {
    /* ... */
};
c();
d(); // ERROR!!

함수명 d로 함수를 실행하면 에러가 발생한다. 외부에서는 기명 함수식의 함수명으로 함수를 호출할 수 없기 때문이다. 함수명은 오직 함수 내부에서만 접근할 수 있다. (즉, 재귀 함수 호출은 가능하다.)

과거에는 기명 함수 표현식은 함수명이 잘 출력됐지만 익명 함수 표현식은 undefined 또는 unnamed 값이 나와서 디버깅을 하기 어려웠다. 하지만 최근 모든 브라우저들은 익명 함수 표현식의 변수명을 함수의 name 프로퍼티에 할당하기 때문에 굳이 기명 함수 표현식을 사용할 필요가 없다.

outerEnvironmentReference

스코프, 스코프 체인

ThisBinding



📚 참고

코어 자바스크립트 (저자: 정재남)

Joie-Kim

Joie-Kim

배운 것을 기록하는 습관! ✍️

comments powered by Disqus
rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin pinterest medium vimeo stackoverflow reddit quora quora