언젠가 "모든 자바스크립트 개발자가 알아야 하는 33가지 개념" 이라는 내용이 언젠가 유행이었던 적이 있다.
뭐 내용을 보면, 아주 당연하게 알아야 하는 내용이기도 하고, 추가가 되면 되었지 몰라야 할 만한 내용은 딱히 없다.
해당 내용으로 한동안 블로그를 적고자 한다.
1. JavaScript와 같은 고급 코드 라인이 호출 스택 ( 고급 언어 에서 기계 코드 까지 ) 에서 스택 프레임으로 변환되고 실행되는 방식을 이해합니다.
자료구조를 배우면, 링크드리스트를 배우고 나서, 스택을 배웠던 기억이 있다. 간단하게 선입후출 형태의 자료구조이다. 일반적으로 대부분의 언어에서 스택은 최대크기를 갖는다.
자 여기서 이야기 할 것은 자료구조로써의 스택을 공부하고자 하는 것 아니지만, 선입, 후출, 최대크기가 있다는 정도만 생각하자.
let g = 0
function first() {
let a = 1
let second = () => {
let b = 2
third();
console.log("두 번째", a);
debugger;
}
second();
console.log("첫 번째");
debugger;
}
function third() {
let c = 3
console.log("세 번째");
debugger;
}
first();
자 간단하게 보자.
실행 컨텍스트라고 하면, 복잡하게 생각될 수 있는데, 크게 세가지로 볼 수 잇다.
VariableEnvironment: 변수 이름과 값을 담은 객체
LexicalEnvironment: 변수 검색 범위 결정
this 바인딩: this 키워드가 참조하는 객체 결정
각각의 용어는 자세하게 설명하면 꽤나 긴 내용이니, 해당 함수가 실행되기 위한 환경 정보를 실행컨텍스트라고 생각하면 편하다.
추후 기회가 되면 자세하게 다뤄보도록 하자.
댓글
댓글 쓰기