-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
정리했봤습니다. 다른 분이 질문한 내용이 많은 도움이 됐습니다!
20.11.15 16:34 작성 조회수 23
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