• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

정리시간 질문입니다.

20.02.09 16:57 작성 조회수 116

0

function book() {

    function get() {

        return point;

    };

    var point = 123;

    return get();

};

console.log(book());

실행 컨텍스트{

    렉시컬 환경 컴포넌트{

        환경 레코드: {

         point: 123

        }

        외부 렉시컬 환경 참조: {

       

        }

    }

    변수 환경 컴포넌드 {

    }

    this bind 컴포넌트

}

이렇게 되는게 맞나요?

답변 2

·

답변을 작성해보세요.

0

환경 레코드: {

   point: 123

}

맞습니다. 

---------------------

function add() 함수 오브젝트는 Function()의 prototype을 참조하고 다시 Object()의 prototype을 참조 하면서,

add() 함수는 prototype을 갖고 있는 것이지 참조하는 것이 아닙니다.

여기서 참조는 add() 함수가 속한 오브젝트를 뜻하며, 글로벌 오브젝트에 add 함수를 작성했으므로 글로벌 오브젝트에 속하게 되어 글로벌 오브젝트가 스코프가 되지만 ES5에서는 글로벌 오브젝트가 window 오브젝트에 설정되는 개념(글로벌 오브젝트는 오브젝트라는 실체가 없습니다)이므로 window 오브젝트 === 글로벌 오브젝트입니다. 

 

0

그리고 function add() 함수 오브젝트는 Function()의 prototype을 참조하고 다시 Object()의 prototype을 참조 하면서,

func add()의[[SCOPE]]는 window 오브젝트를 참조하고 있는데 Object() [[SCOPE]]는 참조를 하지 않는 다는건,

window가 글로벌 오브젝트이지만 Oject, Function, Global이 같은 레벨에 있는 객체라서 그런건가요?