• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

정리했봤습니다. 다른 분이 질문한 내용이 많은 도움이 됐습니다!

20.11.15 16:34 작성 조회수 116

2

1. book Function 오브젝트가 생성 → [[scope]] 는 글로벌 오브젝트를 바인딩(= 외부 렉시컬 환경 참조에 연결)

2. book(200) 호출

3. 호출 파라미터 bookParam 는 book 의 선언적환경레코드에 연결 { bookParam: 200 }

4. getPoint Functon 오브젝트가 생성 → [[scope]] 는 book Function 오브젝트를 바인딩

5. point 할당 및 실행 으로 book 의 선언적 환경레코드는 {bookParam : 200, point: 100} 

6. 또한 getPoint 의 외부 렉시컬 환경 참조 : { bookParam : 200, point : 100 } 형태가 된다.

// book(200) 호출되고 리턴 후 
// book Function 오브젝트 형태
렉시컬환경컴포넌트 = {
    환경 레코드 : {
        선언적 환경 레코드 : { bookParam: 200, point: 100 }
    }
    외부 렉시컬 환경 : {
    // 글로벌 오브젝트
    }
}

.

1. getPoint Function 오브젝트를 리턴 obj 에 할당

2. obj(400) → book.getPoint(400) 호출

3. 호출 파라미터 pointParam 은 400 을 getPoint 의 선언적환경레코드에 연결 {pointParam : 400}

// obj(400) 호출 된 이후의
// getPoint Function 오브젝트 형태
렉시컬환경컴포넌트 = {
    환경 레코드 : {
        선언적 환경 레코드 : { pointParam: 400 }
    }
    외부 렉시컬 환경 : {
        bookParam: 200,
        point: 100
    }
}

.

1. point 는 선언적환경레코드에 없으므로 [[scope]]를 연결한 외부 렉시컬 환경 참조에 연결된 point : 100 값을 의미한다.

2. bookParam 은 선언적환경레코드에 없으므로 [[scope]]를 연결한 외부 렉시컬 환경 참조에 연결된 bookParam : 200 값을 의미한다.

3. point = 100 + 200 + 400 으로 point 에는 700 값이 들어가고 리턴하고 출력한다.

답변 1

답변을 작성해보세요.

1

좋습니다. 짝짝~