• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

Execution Context에 대하여 질문이 있습니다.

20.09.03 18:09 작성 조회수 130

0

 안녕하세요?

JavaScript의 내부적인 동작이 궁금하여 강의를 보게 되었는데, 아직 초반이지만 지금까지 알고 있던 것들이 퍼즐조각 처럼 맞춰지면서 이해가 되는 듯 하여 좋은 것 같습니다. 하지만 그래도 아직 미숙한지라 궁금한 점이 생겨 글을 쓰게 되었습니다.

일단 질문은 아래와 같습니다. (3강에 대한 질문입니다)

1. 제일 첫 번째로 book함수가 호출이 된다는 것은 book 함수 역시 Execution Context가 만들어지고, 이후에 내부로 JavaScript Engine이 접근하여 차례대로 point 변수와, show 함수, getPoint 함수를 만드는 걸로 이해했는데 맞을까요?

2. JavaScript Engine이 function 키워드를 만나게 되면 [[Scope]]가 결정이 된다고 하셨는데, book, show, getPoint 함수의 경우에는 book();과 같이 호출하기전엔 아직 [[Scope]]가 안만들어져 있는건가요? 그렇다면 this 의 경우에는 언제 결정이 되는건가요?

3. Context 환경을 사용함으로써 좋은 점이 "함수가 메모리에 올라가면 해당 함수에서 다른 값을 참조하여 사용하기 위해

메모리를 빠져나오거나,

(여기서 빠져 나온다고 말씀하셨는데 저는 해당 함수에서 필요한 변수나 함수를 메모리에 올리거나 다른 코드를 올리기 위해 메모리에서 swap out 한다고 이해했습니다)

추가할 필요가 없다."라고 말씀하셨는데 코드를 실행하기 위해선 메모리에 있어야하고, 그렇다면 JavaScript의 코드 전체를 메모리에 올려두고 사용한다는 말씀이신가요? Context안에 property형태로 저장해두는 것(변수나 함수)은 주소값을 참조하여 빠르게 사용할 수 있다고 이해하였는데, "메모리를 빠져나오거나 추가할 필요가 없다."라는 말씀이 잘 이해가 가지 않습니다.

답변 주시면 정말 감사하겠습니다.

답변 2

·

답변을 작성해보세요.

1

taylous님의 프로필

taylous

질문자

2020.09.04

답변 감사합니다.

 제가 너무 앞서간 것 같습니다. 답변 다시 한 번 감사합니다!

점점 JavaScript가 재밌어지는 것 같습니다.

1

강좌 앞에서 전체 개요를 다루고, 단계별로 하나씩 깊게 들어갑니다. 이런 형태로 강좌가 진행됩니다. 질문하신 현재 위치에서 완전하게 이해하지 못해도 됩니다. 뒤에서 자세하게 다루기 때문입니다.

1번: 맞습니다.

2번: 함수 안에 작성된 함수는 아직 function 키워드를 만나지 않았으므로 [[Scope]]가 만들어 지지 않습니다. 즉, book 함수 안에 작성한 코드는 처리하지 않습니다. book() 함수를 호출하면, book() 함수 안으로 엔진 컨트롤이 이동하게 되며 show 함수, getPoint 함수를 만나므로 그때 만듭니다. 이에 대해서는 뒤에서 다시 언급합니다.

2번: this는 [[Scope]]와 관계 없습니다. obj가 오브젝트 또는 인스턴스일 때, obj.abc() 형태로 호출하면, abc() 함수 안에서 this가 obj를 참조합니다. 이에 대해서도 뒤에서다룹니다. 

3번: 조금 차이가 있습니다. 다룰 내용이 많아 여기에 작성하기 어렵습니다. 이 또한 뒤에서 단계별로 진행하므로 지금은 물음표로 남겨 두고 진행하셔도 되겠습니다.