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

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 2월 23일 오전 10:41

댓글 0