• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

안녕하세요 질문드립니다

21.06.21 13:21 작성 조회수 164

0

<body>
        <script>
            function solution(s){
                let answer=s;
                for(let x of answer){
                    if(x==='A'x='#';
                }
                return answer;
            }
            
            let str="BANANA";
            console.log(solution(str));
        </script>
    </body>

이렇게 하면 정답출력이 안되는데 혹시 이유를 알수 있을까요?

답변 1

답변을 작성해보세요.

6

김경민님의 프로필

김경민

2021.06.22

안녕하세요! 

solution 함수 안의 for of문에서 문자열 타입 값이 저장된 answer의 한 글자씩

x에 차례대로 복사합니다.

이때 변수 x는 문자열 answer을 한 글자씩 나타내는게(가리키는게) 아닌

그 값을 복사해서 x라는 새로운 이름의 변수에 저장해준 것이기 때문에

x 에 새로운 값을 넣어줘도 원래 문자열 answer는 변화가 없습니다.

'깊은복사', '얕은복사' 키워드로 검색해보세요.

새로운 변수를 하나 생성하셔서 기존 문자열을 한글자씩 복사하시다가

질문글의 내용처럼 특정 문자일 경우 바꿔주시는 방법도 있고,

정규표현식을 사용하시거나 split과 join 함수를 사용하실 수도 있습니다.

replace()과 같은 String prototype methond

관련해서도 한번 찾아보세요!