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

박진혁님의 프로필 이미지
박진혁

작성한 질문수

[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스

▶ openWeatherMap API

함수 호이스팅

해결된 질문

작성

·

262

0

Todolist 코드 작성할때

함수표현식으로 작성된 함수는

호이스팅이 되지않는다고 하셨는데,

saveItemsFn같은 함수는 어떻게 정의 되기 전에 createTodo와 같은 함수에서 사용 할 수 있는건가요?

답변 1

0

노원두님의 프로필 이미지
노원두
지식공유자

안녕하세요! 진혁님!

호이스팅이 되지 않는다(X) => 호이스팅이 되지만 TDZ에 들어가 있으므로 값이 할당되기 전엔 접근할 수 없다(O)로 정리해 주세요!

따라서, createTodo가 saveItemsFn보다 위에 있지만 나중에 createTodo가 실행될 때 이미 saveItemsFn은 존재하는 상태이므로 정상적인 실행이 가능합니다!


아래는 간단히 변경한 예시입니다!

imageqqq와 zzz라는 2개의 함수를 만들고 있습니다.
qqq, zzz 모두 호이스팅 되었으므로 undefined라고 오른쪽 Scope(스코프)에 선언되어 있는게 보이네요!
qqq 안에서는 zzz 함수를 실행시키는 로직을 포함하고 있어요!(현재는 zzz가 undefined이지만! 어차피 지금 실행할 것 아니니 상관 없겠죠?!)

image

위에서부터 실행하여 qqq와 zzz에 정상적인 값들이 할당되었네요!
드디어! 준비 완료가 되었습니다!

이제 사용자가 버튼을 클릭하였을 때, qqq() 함수를 실행시킨다면,
qqq 함수 내부에 있는 zzz는 충분히 실행 가능하겠죠?!

박진혁님의 프로필 이미지
박진혁

작성한 질문수

질문하기