• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코딩 시간

21.01.26 21:46 작성 조회수 111

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;를 작성하고 실행하는 라인  단위로 따라가면서 오른쪽의 프로퍼티 창에서 변하는 값, 형태를 면밀하게 체크하고 이해하기 바랍니다. 이것을 정확하게 이해하지 못하면 다음 강의부터 논리가 만들어지지 않으니 여기서 매듭을 짓고 넘어가야 합니다.