개발자

(js 초보 질문) scrollEventHandler() 함수 위에 scrollPositionY 변수를 0으로 초기화 시키는 이유가 궁금해요.

2023년 02월 23일조회 113

안녕하세요 JS 기초 관련 질문 드립니다! 질문) 아래 코드에서 왜 scrollEventHandler() 함수 위에 scrollPositionY 값을 0으로 초기화 시키는지 이유가 궁금합니다.

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

답변 1

김대현님의 프로필 사진

변수의 범위(scope)에 관한 질문인데요, 2~4번째 줄에 작성한 scrollEventHandler()함수 입장에서 변경하고자 하는 scrollPositionY를 바깥 범위에서 미리 선언해 둔 것입니다. 1번째 줄에서 let으로 scrollPositionY를 준비해두고, 3번에서 접근하면, 함수 안에는 scrollPositionY라는 변수가 현재 범위(local scope)에 없기 때문에, 그보다 상위 범위(outer scope)에 있는 변수를 찾아 접근하게 되고, 그게 1번 째 줄에서 선언한 scrollPositionY가 됩니다. 만약, 함수 안에서 let으로 선언해버리면, 함수 안에서는 window.scrollY가 대입된 값으로 변경되겠지만, 함수 밖에서는 해당 변수를 접근할 수 없어서, 무용해집니다. 그러니 사실 0이라는 값 자체는 중요하지 않고, 무슨 값이 됐든지 간에 scrollPositionY를 준비해 두기만 하면 되는 거죠. 기본 값을 화면 최상단인 0으로 해둔 건데, 왜 그게 0인지는 크게 중요한 값은 아니었던 겁니다. 스크롤이 일어나서, 해당 함수가 불리기만 하더라도 바로 다른 값으로 교체되겠지요. 만약, 무슨 얘기인지 모르시겠다면, "변수의 범위"를 주제로 학습해보시면 도움이 될 것 같습니다.

profile picture

익명

작성자

2023년 02월 24일

오 그렇군요..! 완전 잘 이해했습니다. 공부해 봐야 할 주제도 말씀해 주셔서 감사해요! 열심히 학습해 보겠습니다.

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

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

또는

이미 회원이신가요?

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

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

새로운 질문 올리기

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