• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

변수 재선언에 대한 질문입니다.

18.06.08 22:59 작성 조회수 87

1

"동일 변수 재선언은 같은 유효범위 안에서만 해당한다"는 코멘트를 보고 문득 생각난 것이 있어 데이터타입 영상을 다시 보았습니다.

생각해보니, "재선언"이라는 것만 떼서 보면, inner에서 a가 재할당되었다면 outer나 window 범위에서 a는 inner에서 덮어쓴 3이라는 데이터로 바뀌었어야 합니다. 그런데 inner 범위에서만 a를 재선언했으니 실제로 메모리에는 두개의 a변수값이 각각의 주소값을 가지되, 바라보는 위치 혹은 서로 다른 위치를 바라본다 해도 값이 같은(혹은 다른) 식이 되겠구나 싶었습니다.

어쨌든 메모리에 둘 모두가 존재해야 출력, 반환받을 수 있다는 결론인데요.

그러면 이렇게 동일명의 변수는 어떤 방식으로 메모리에 저장되고 값을 찾는지가 궁금하네요. 전 지금까지 해당 함수 내부에서 값을 덮어씌웠다고만 생각했습니다.

답변 1

답변을 작성해보세요.

3

각 스코프는 서로 별개의 메모리공간을 가집니다. 그리고 그 스코프상에서 선언한 변수들은 모두 스코프 고유의 메모리공간에 저장되는거죠. 문득 생각난 다른 비유를 들어볼게요. 서울시(지역스코프)의 ‘대표’라는 변수에는 박원순 시장이 할당되어 있고, 대한민국(전역스코프)의 ‘대표’라는 변수에는 문재인 대통령이 할당되어 있는 거에요. 이런 느낌으로 이해하시면 딱 좋을 것 같네요 ㅎㅎ