강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

yuhey님의 프로필 이미지
yuhey

작성한 질문수

자바스크립트 중고급: 엔진 핵심

8. 호이스팅, 함수 앞에서 호출, [코딩 시간]

코딩 시간

작성

·

196

0

강사님, 안녕하세요.

아직 많이 부족한 상태이지만, 강사님께서 내주신 숙제를 한번 시도해봤는데..

제가 정확하게 답이 맞는 지 모르겠어 이렇게 질문 게시글에 올립니다.

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

1 > 함수 선언문, 함수호출(), 함수 선언문

function book(){

function getBook(){

return "책1";

};

// 여기서 함수 호출

console.log(getBook());

function getBook(){

return "책2";

};

};

book();

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

책2

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

*이유 ? 자바스크립트 같은 경우에는 함수가 정의된 것이 있는지 전체적으로 확인하고 실행하기 때문에 아래에서 책2가 책1보다 후에 생성된 getBook()이기 때문에 책2가 출력되는 것이라고 생각한다.

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

2 > 함수 표현식, 함수 호출(), 함수 표현식

function book(){

var getBook = function(title){

return "책1";

};

// 여기서 함수 호출

console.log(getBook());

var getBook = function(title){

return "책2";

};

};

book();

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

책1

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

*이유 ? 바로 위에서 책1로 지정하고 출력하였기 때문에 책1이 출력되며 만약 책2로 지정한 후에 출력한다면 책2로 출력된다.

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

3 > 함수 선언문, 함수 호출(), 함수 표현식

function book(){

function getBook(){

return "책1";

};

// 여기서 함수 호출

console.log(getBook());

var getBook = function(title){

return "책2";

};

};

book();

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

책1

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

*이유 ? 초기화 단계에서 값이 있는 경우에는 무시하고 초기화를 하지 않는다.

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

4 > 함수 표현식, 함수 호출(), 함수 선언문

function book(){

var getBook = function(title){

return "책1";

};

// 여기서 함수 호출

console.log(getBook());

function getBook(){

return "책2";

};

};

book();

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

책1

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

*이유 ? 초기화 단계에서 값이 있는 경우에는 무시하고 초기화를 하지 않는다.

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

감사합니다.

답변 1

0

김영보님의 프로필 이미지
김영보
지식공유자

문맥이 맞지 않는 것도 있으며 강좌 내용을 완전하게 이해하지 못한 것도 있습니다.
알려 드릴 수는 있지만, 이것은 중요한 실행 구조이므로 시간이 걸리더라도, 혼자서 코딩을 통해 체험으로 내 것으로 만들어야 합니다. 
코드 앞에 debugger;를 작성하고 실행하는 라인  단위로 따라가면서 오른쪽의 프로퍼티 창에서 변하는 값, 형태를 면밀하게 체크하고 이해하기 바랍니다. 이것을 정확하게 이해하지 못하면 다음 강의부터 논리가 만들어지지 않으니 여기서 매듭을 짓고 넘어가야 합니다. 

yuhey님의 프로필 이미지
yuhey

작성한 질문수

질문하기