• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

호이스팅과 오버로드

21.04.30 16:40 작성 조회수 139

0

좋은 강의 감사드립니다.

호이스팅과 오버로딩을 배우던 중 의문점이 생겨 질문 드립니다. 

먼저, 호이스팅 강의에서 함수 코드 해석의 첫 단계인 함수 선언문 단계에서 book과 function오브젝트가 스코프에 할당이 되고, 두 번째 변수 초기화 단계에서 변수를 초기화하려고 하는데 이미 값이 있으므로 undefined를 할당하지 않고 원래대로 냅둔다고 하셨습니다. 

그리고 오버로딩 강의의 두 번쨰 페이지에서는 "{name : value}형태에서 이름이 같으므로 값이 변경된다." 라고 기술하셨습니다.

여기서 제 질문은 같은 해석단계, 즉 여기서는 함수 선언문 해석 단계에서는 값이 대체가 될 수 있는건가요? 아니면 스코프에 값이 할당된 상태에서 초기화를 하려고 하면 프로퍼티 자체가 이미 존재하기 때문에 하지 않는거다 라고 이해를 해야하나요?

감사합니다.

답변 1

답변을 작성해보세요.

1

여기서 제 질문은 같은 해석단계, 즉 여기서는 함수 선언문 해석 단계에서는 값이 대체가 될 수 있는건가요? 아니면 스코프에 값이 할당된 상태에서 초기화를 하려고 하면 프로퍼티 자체가 이미 존재하기 때문에 하지 않는거다 라고 이해를 해야하나요?

// 해석 단계, 아래 순서로 실행했을 때
function book(){};

// 대체(오버라이딩)되지 않습니다.
var book = function(){};

//대체됩니다.
function book(){};
-------------

// 실행 단계, 아래 순서로 실행했을 때
function book(){};

// 대체됩니다.
var book = function(){};

// 호이스팅, value 변숫값을 undefined로 인식하지만, 변수 이름을 인식하지 못해 에러가 나지는 않습니다.
var result = value ? value : 100;
var value = 123;