자바스크립트 해석좀 부탁드려요

조회수 517회
function getNumber(str) {
    if (typeof str == 'string') {
        if (isNaN(str)) {
            return -1;
        } else {
            return parseFloat(str);
        }
    } else if (typeof str == 'boolean') {
        if (str) {
            return 1;
        } else {
            return 0;
        }
    } else if (typeof str == 'object') {
        var tmp = str.toString();
        return getNumber(tmp);
    } else {
        return str;
    }

}
console.log("getNumber(11): " + getNumber("11")); // 11
console.log("getNumber(true): " + getNumber("true")); // -1
console.log("getNumber(true): " + getNumber(true)); // 1
console.log("getNumber(new Date()): " + getNumber(new Date())); // -1

자바스크립트 배운지 얼마안되었는데 함수부분에서 부분적으로는 해석이 가능한데 전체 적으로보면 값이 왜이렇게 나오는지 잘 모르겠어요,..해석좀 ㅠ

  • ture -> true 아닌가요? 편집요청빌런 2020.1.22 15:09
  • 소스 전체를 톺아달라고 하지 마시고 이해가 안되는 부분을 정확히 말씀해보세요. 편집요청빌런 2020.1.22 15:10
  • 아 그부분 수정하였습니다. 저 리턴 값에 숫자가 어떤의미인건지와 마지막 else if 안에 들어있는 변수랑 리턴값이 이해가 잘 안되네요,.. 알 수 없는 사용자 2020.1.22 15:24

1 답변

  • function getNumber(str) {
        if (typeof str == 'string') { // str의 타입이 string이면
            if (isNaN(str)) { // str이 유효 수치(≒ 숫자로 표현 가능한지)가 아니면
                return -1; // -1 반환
            } else { // str이 유효 수치이면
                return parseFloat(str); // str을 float 타입으로 변환해서 반환
            }
        } else if (typeof str == 'boolean') { // str의 타입이 boolean이면
            if (str) { // str이 true로 평가되는 값이면
                return 1; // 1 반환
            } else { // str이 false로 평가되는 값이면
                return 0; // 0 반환
            }
        } else if (typeof str == 'object') { // str의 타입이 object이면
            var tmp = str.toString(); // str의 toString 메서드 호출해서 tmp에 할당
            return getNumber(tmp); // getNumber(tmp) 재귀 호출하며 반환된 값을 반환
        } else { // str의 타입이 string, boolean, object 중 어느 것도 아니면
            return str; // 전달된 str 그대로 반환
        }
    }
    console.log(getNumber("11")); // 11
    console.log(getNumber("true")); // -1
    console.log(getNumber(true)); // 1
    console.log(getNumber(new Date())); // -1
    

    질문이 이해가 안되서 라인마다 코멘트 달아봤습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)