조회 88
익명
2월 23일
안녕하세요 JS 기초 관련 질문 드립니다! 질문) 아래 코드에서 왜 scrollEventHandler() 함수 위에 scrollPositionY 값을 0으로 초기화 시키는지 이유가 궁금합니다.
구체적이고 정성스러운 질문에 ↑Up 투표를 눌러주세요.
설명이 부족한 질문에 ↓Down 투표를 눌러주세요. 커리어리가 질문자에게 수정을 요청할게요.
답변 1
변수의 범위(scope)에 관한 질문인데요, 2~4번째 줄에 작성한 scrollEventHandler()함수 입장에서 변경하고자 하는 scrollPositionY를 바깥 범위에서 미리 선언해 둔 것입니다. 1번째 줄에서 let으로 scrollPositionY를 준비해두고, 3번에서 접근하면, 함수 안에는 scrollPositionY라는 변수가 현재 범위(local scope)에 없기 때문에, 그보다 상위 범위(outer scope)에 있는 변수를 찾아 접근하게 되고, 그게 1번 째 줄에서 선언한 scrollPositionY가 됩니다. 만약, 함수 안에서 let으로 선언해버리면, 함수 안에서는 window.scrollY가 대입된 값으로 변경되겠지만, 함수 밖에서는 해당 변수를 접근할 수 없어서, 무용해집니다. 그러니 사실 0이라는 값 자체는 중요하지 않고, 무슨 값이 됐든지 간에 scrollPositionY를 준비해 두기만 하면 되는 거죠. 기본 값을 화면 최상단인 0으로 해둔 건데, 왜 그게 0인지는 크게 중요한 값은 아니었던 겁니다. 스크롤이 일어나서, 해당 함수가 불리기만 하더라도 바로 다른 값으로 교체되겠지요. 만약, 무슨 얘기인지 모르시겠다면, "변수의 범위"를 주제로 학습해보시면 도움이 될 것 같습니다.
익명
작성자
2월 24일
오 그렇군요..! 완전 잘 이해했습니다. 공부해 봐야 할 주제도 말씀해 주셔서 감사해요! 열심히 학습해 보겠습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직 개발자들의 명쾌한 답변을 얻을 수 있어요.