우선 다음과 같은 코드가 있다고 가정하자
가장 밑에서 부터 최초에 이 전체 코드가 실행되면 나타나는 글로벌 실행 컨텍스트가 있고 그 안에 variable Object들이 생성된다. 그래서 변수 a와 함수 f1 전역 variavle Object인 console까지 들어가 있는 모습이다.
그래서 코드를 계속 실행함에 따라 실행 컨텍스트가 stack 구조로 계쏙 쌓이고 함수 f2
의 print(a+b+c) 부분에서는 scope를 통하여 변수들을 찾아오는 것을 확인할 수 있다.
또한 print 함수를 보면 console이라는 (원래는 window 객체이지만) 객체를 scope를 통해 참조하여 실행한다. 그리고 실행이 완료되면 stack에서 사라진다.
const o = {
name: "Kim",
changeMyName: function (name) { this.name = name },
};
const o2 = {
name: "Song",
};
function callFuncWithArg(f, arg) {
f(arg);
}
o.changeMyName.bind(o2)("Sam");
console.log("1번 - ", o2.name);
callFuncWithArg(o.changeMyName, "Daniel");
console.log("2번 - ", o.name);
o.changeMyName("Sam");
console.log("3번 - ", o.name);