개발자

리액트에서는 호이스팅이 다른이유?

2024년 07월 02일조회 140

순수 자바스크립트에서는 함수선언문으로 만든 경우에만 호이스팅단계에서 선언과 초기화가 코드 실행 전에 이뤄져서, 선언부보다 윗라인의 코드에서 사용할 수 있다고 배웠습니다. 그런데 첨부한 이미지처럼, 리액트에서는 함수형 컴포넌트를 화살표함수로 만들고, const를 사용해서 변수를 선언해도 선언부보다 윗라인의 코드에서 사용이나 참조가 가능한 이유가 뭔가요?? 구글에서 글을 여러개 찾았는데 이야기 하는게 다 달라서 너무 햇갈리고 궁금합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

유길종님의 프로필 사진

호이스팅과 TDZ는 같은 실행컨텍스트 레벨에서 유의해야하는 문제입니다. 같은 실행컨텍스트 스코프에서 Layout 이라는 함수를 정의하는 것보다 Layout을 호출하는 것이 더 빠르다면 이는 문제가 됩니다. 그러나 올려주신 예시를 보면 App 함수가 Layout보다 일찍 정의되는 것은 맞지만 Layout이 App 함수에 의해 호출되는 시점은 App 함수가 호출된 이후라는 것을 알 수 있습니다. 그렇기 때문에 이는 문제가 되지 않는 것이며 리액트만의 특수한 동작방식이 아닌 자바스크립트의 동작 원리상 자연스러운 부분입니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!