자바스크립트 해석좀 부탁드려요
조회수 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
자바스크립트 배운지 얼마안되었는데 함수부분에서 부분적으로는 해석이 가능한데 전체 적으로보면 값이 왜이렇게 나오는지 잘 모르겠어요,..해석좀 ㅠ
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
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
질문이 이해가 안되서 라인마다 코멘트 달아봤습니다.
댓글 입력