• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

const가 이런 경우에는 왜 오류가 안나는거죠 ?

23.01.10 11:21 작성 조회수 420

0

function solution(s) {
     s = "gg";
     return s;
}
const str = "gooG";
console.log(solution(str));

예제를 하다가 보통 solution에게 매개변수로 넘겨주는 값이 let로 되어 있어서 const로 바꾸어 보았는데요

str은 const이고 solution 함수로 전달되어서 str값을 변경을 시켜주었는데 오류가 안나고 변경이 되더라구요

const는 상수이고 변할수 없는 값인데요

이런경우 어떻게 변할수가 있는거죠 ?

답변 1

답변을 작성해보세요.

2

김정근님의 프로필

김정근

2023.01.14

지나가다 답변합니다

scope(유효범위)가 달라서 그렇습니다. 혹시라도 scope 개념을 모르시면 따로 찾아서 공부하시는 거 추천합니다

함수 안은 지역 스코프이고 그 밖은 전역 스코프인데, 작성자님은 str 상수를 전역에서 선언하고 값을 할당했습니다

그리고 그 값은 변한 적이 없습니다

solution(str)이 실행한 것은 str 상수의 값인 "gooG"를 (str 상수 그 자체가 아님 주의) 솔루션 함수에 인자로 전달하고 그 값을 반환한 것뿐입니다

이때 사용된 건 s로 참조된 지역 스코프의 변수이지, 전역 스코프의 str 상수가 아닌 것입니다

따라서 위 코드에서 막줄에 console.log(str)을 해보시면, "gg"가 아니라 "gooG"가 출력됨을 볼 수 있습니다

또한 console.log(s)를 해보시면 s가 정의되지 않았다고 오류 메시지가 출력되는데, 왜냐하면 s는 솔루션 함수 스코프 안에서만 정의되었으므로 그 스코프 내에서만 접근할 수 있기 때문입니다

 

 

안녕하세요^^

답변 감사합니다. 좋은 하루 되세요!!