inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

코딩 시간

200

yuhey

작성한 질문수 4

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

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

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

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

감사합니다.

javascript

답변 1

0

김영보

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

getBook 실습 예제중 질문드립니다!

0

419

1

__proto__ 에 대해 질문드립니다

0

315

1

호이스팅 코딩시간 풀이

0

358

1

[코딩 시간] JS {name: value} 이해

0

340

1

[[Scope]] 와 [[Environment]]는 같은 개념인가요

0

345

0

slice

0

239

0

스코프가 뭔가요?

0

307

0

어려워요

0

255

0

강사님 변수이름에 get을 붙이는 이유를 알고싶습니다.

0

339

1

[정리 시간] 정확하게 이해했는지 확인 부탁드립니다.

0

300

0

스코프 질문

0

253

1

fn 함수와 book.get 함수 차이 질문드립니다...ㅠㅠㅠ

1

542

1

this binding 논리 질문입니다.

0

279

1

파라미터 값을 매핑할 때

0

251

0

ES6부터는 this 바인딩을 환경 레코드에서 참조한다고 들었습니다.

0

209

0

정리시간 입니다.

0

228

0

정리시간입니다.

6

269

0

정리 시간 입니다.

0

202

0

정리시간입니다.

6

227

0

코딩시간 입니다.

1

221

0

선생님 스코프 질문이 있습니다.

1

239

0

[정리시간] 해보았습니다!

0

175

0

선생님 질문있습니다!!

0

159

0

질문드려도 될까요 선생님..

0

216

0