• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

파라미터 값 매핑 정리

21.04.08 10:26 작성 조회수 207

0

var obj = {};
obj.getTotal = function(one, two, two) {
    console.log(one + two);
};
obj.getTotal(11, 22, 55);

초기화

1. obj.getTotal(11, 22, 55) 함수가 호출되면

    파라미터 값을 실행 콘텍스트에 넘겨줍니다. 

2. 파라미터 이름에 값을 매핑

    getTotal 오브젝트의 [[FormalParameter]]에서 호출된 함수의 파라미터 이름을 구함

    ["one", "two"] 

    생성된 argu 배열의 인덱스에 따라 차례대로 값을 구하며 two를 덮어쓰게 됩니다.

    선언적 환경 레코드에 {one: 11, two: 55} 형태로 설정합니다.

3. 내부 함수 선언문을 검색 - 해당사항 없음

4. 내부 변수 검색 obj에 undefined;

5. obj에 {} 할당

6. 초기화할 코드가 없기에 다시 첫 줄로 이동하여 함수 코드를 실행합니다.

실행단계

7. 선언적 환경 레코드는 {one: 11, two: 55} 상태 

8. console.log(one + two)로 이동

   선언적 환경 레코드에서 one, two 값을 구하고 그 결과 값인 66 출력

최대한 그 구성 맥락을 이해하려 하는데 컴포넌트 분류 개념이 확실한지 계속 돌려보고 있어요. 

실행 콘텍스트(EC): {
    렉시컬 환경 컴포넌트(LEC) = {
        환경레코드(ER) : {
            선언적 환경 레코드(DER) : {
                argument : {one: 11, two: 55}
            },
            오브젝트 환경 레코드(OER) : {}
        },
        외부 렉시컬 환경 참조(OLER) : {
            obj : {}
        }
    },
    변수 환경 컴포넌트(VEC) : {},
    this 바인딩 컴포넌트(TBC) : {}
}

답변 1

답변을 작성해보세요.

3

아래 문장을 논리적으로 접근해주세요. 

생성된 argu 배열의 인덱스에 따라 차례대로 값을 구하며
=> 힌트: 자바스크립트에 "argu 배열"은 없으며 argument 오브젝트는 있습니다. 

4. 내부 변수 검색 obj에 undefined;

5. obj에 {} 할당

=> 4번과 5번 힌트: 1. obj.getTotal(11, 22, 55) 함수가 호출되면
=> obj는 getTotal() 함수 안에 있지 않습니다.

simoniful님의 프로필

simoniful

질문자

2021.04.08

1. obj.getTotal(11, 22, 55) 함수가 호출되면

    파라미터 값을 실행 콘텍스트에 넘겨줍니다. 

2. 파라미터 이름에 값을 매핑

    getTotal 오브젝트의 [[FormalParameter]]에서 호출된 함수의 파라미터 이름을 구함

    ["one", "two"] 

    생성된 argu 오브젝트의 인덱스에 따라 차례대로 값을 구하며 two를 덮어쓰게 됩니다.

    선언적 환경 레코드에 {one: 11, two: 55} 형태로 설정합니다. 

3. 함수를 호출한 obj를 this 바인딩 컴포넌트에 설정

4. 내부 함수 선언문을 검색 - 해당사항 없음

5. 내부 변수 검색 - 해당사항 없음

이후 동일 

이렇게 수정해야할 거 같네요

실행 콘텍스트(EC): {
    렉시컬 환경 컴포넌트(LEC) = {
        환경레코드(ER) : {
            선언적 환경 레코드(DER) : {
                argument : {one: 11, two: 55}
            },
            오브젝트 환경 레코드(OER) : {}
        },
        외부 렉시컬 환경 참조(OLER) : {
        }
    },
    변수 환경 컴포넌트(VEC) : {},
    this 바인딩 컴포넌트(TBC) : {
	obj : {}
    }
}