이노캠4주차(금)-console.log와 return, substr

rimhye·2023년 6월 17일
0

이노캠

목록 보기
13/39

📌문제 풀이 중 알게 된 것

1.가운데 문자 출력하기

[문제설명]
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어야함. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됨.

나는 이 문제를 처음엔 이렇게 풀었다.

function solution(s) {
    let a=Math.floor(s.length/2);
    if (s.length%2===0){
       console.log(s.slice(a-1,a+1));
    } else{
      console.log(s.slice(a,a+1));
    }
}

🔨시행착오

그런데 이렇게 하니 출력자체는 예시처럼 되는데 자꾸 기대값과 다르다고 떴다. 그래서 왜일까, 하면서 살펴보니 값이 undefined로 출력되어 오답처리가 되었다.그래서 if문을

 if (s.length%2===0){
       return s[a-1]+s[a];
    } else{
       return s[a];
    }

로 바꿔 해결하였다. 이런 식으로 데이터 타입이 어떻게 출력되는 지 착각해서 오류가 많이 나는데 console.log와 typeof를 자주자주 돌려서 꼭꼭 확인해야겠다. 그리고 다른 문제를 풀다 다른 조원분께서 알려주셔서 알게 됐는데 undefined가 계속 뜬 것은 내가 코드를 잘 못 쓴게 아니라 console.log를 쓴게 문제였다.

🔔console.log vs return

console.log는 말그대로 console창에 출력되는 지 확인하는 거라 저장 개념이 아니었다.
반면에 return 명령문은 함수 실행을 종료하고, 주어진 값을 함수 호출 지점으로 반환한다. 말하자면, 결괏값을 저장(호출 지점으로 반환)을 하지만 출력(호출)을 하진 않는 것이다. 그래서 return문을 써야 옳은 값으로 뜨는 거였다.

참고사이트:console.log와 return의 차이점

그리고 다른 사람 풀이를 보다보니 substr()함수라는 새로운 함수가 보였다. 사실 이렇게 쓰기 전엔 slice() 함수를 이용할까도 생각했는데 slice(a-1,a+1)이런 식으로 코드를 짜니 코드가 보기 싫어진 것 같아서 위의 방식을 채택했는데, substr()이란 함수를 쓰면 깔끔했을 것 같다는 생각이 든다.

🔔substr()함수란?

시작 위치부터 해당 길이만큼 문자열을 자르는 함수로, "길이" 부분을 생략하면 시작 위치부터 문자열 끝까지 자른다.
substr('시작위치','길이') 또는 substr('시작위치')로 작성

✍️ 문제를 풀며 느낀 점

코드테스트를 하며 if문이나 for문을 자주 썼었는데, 그것때문에 함수의 구조 같은 곳에 주로 신경을 쏟아서 console.log가 정확히 뭔 뜻인지 몰랐다는 것이 부끄러웠다.😳😳😳 이론공부는 재미없었지만 테스트를 같이 하면서 자료를 찾다보니 그때 그게 이렇게 쓰는 거구나, 라는 생각이 자주 드는 것 같다. 재미없더라도 자바스크립트 문법 강의를 더 열심히 들어야겠다.

profile
개발자가 되고 싶어요

0개의 댓글