날짜: 2022년 9월 28일 수요일

키워드 및 질문

본문

<aside> 📌 요약: JS의 콜스택에는 실행컨텍스트 단위로 쌓이며, 실행컨텍스트는 코드를 실행하는데 필요한 환경을 제공하는 객체다. 요소로는 this, variable object, scope chain이 있다. 즉, 실행 컨텍스트 혹은 실행 맥락은, 자바스크립트 코드가 실행되는 환경이다. 코드에서 참조하는 변수, 객체(함수 포함), this 등에 대한 레퍼런스가 있다. 실행 컨텍스트는 전역에서 시작해, 함수가 호출될 때 스택에 쌓이게 된다.

함수는 다양한 상황에서 호출될 수 있는데 그 환경에 따라 this는 동적으로 세팅 된다. 이렇게 this가 환경에 따라 바뀌는 것을 dynamic binding이라고 한다. bind, apply, call 등으로 this가 가리키는 것을 조작할 수 있다. arrow function은 this를 조작할 수 없다.

자바스크립트에서 함수는 일급 객체이며 변수처럼 다룰 수 있다. 함수와 함수가 사용하는 변수들을 저장한 공간을 클로저(Closure)라 한다. Closure를 사용하는 이유는 상태를 안전하게 은닉하고 보존시키고, 다른 개발자와 일을 할때 실수를 방지하고 더 탄탄한 코드를 만들기 위함이다.

</aside>