인프런 커뮤니티 질문&답변
호이스팅과 오버로드
작성
·
213
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;





