문제.
This kata is about multiplying a given number by eight if it is an even number and by nine otherwise.
짝수면 8을 곱하고 아니면 9를 곱하도록 하시오.
나의 답변.
만약 if (x % 2 = 0) 이렇게 적으면 error. 이유는 아직 잘 모르겠다.
function simpleMultiplication(x) {
if (x % 2 === 0) {
return x * 8;
} else {
return x * 9;
}
}
다른 이들의 답변.
가독성 때문에 띄어쓰기를 수정하였다.
간단한 문제지만 다른 사람의 코드가 아직 이해되지 않는다.
문법에 익숙하지 않아서 그런 것 같다.
그냥 '아 이렇게 간단하게도 쓸 수 있구나' 참고 정도...
1)
function simpleMultiplication(n) {
return n * (n % 2 ? 9 : 8);
}
2)
const simpleMultiplication = n => n * (n % 2 ? 9 : 8)
두 개의 코드에서 이해가 안되는 점.
javascript에서는 1은 true, 0은 false라는 의미를 가진다.
위 두가지 코드를 삼항연산자로 분석해보면
n % 2 = boolean 값이 나오는 조건식이다.
n에 정수 값을 입력하면 n % 2의 답은 무조건 0 아니면 1이 나온다.
그럼 javascript에서 boolean값에 맞게 나오고, 내가 코드를 이해하는데도 문제가 없다.
다만 궁금한 점은 n에 실수 값을 입력했을 때다.
콘솔에서 n의 값으로 0.443을 입력했다.
0.443를 2로 나누었을 때 나머지 값은 절대 1이나 0으로 나오지 않는데
콘솔에 찍어보면 n에 그 어떤 인수를 대입해도 true 값이 나오는 것이다......
이게 이해가 안돼서 슬프다. (울적)
function simpleMultiplication(n) {
return n % 2 == 0 ? n * 8 : n * 9
}
삼향연산자인데 책에서 배웠다. (주교재 182쪽)
나머지 방식들은 배운 적이 없으니 모르지만.....
이건 알고 있는 건데.....
이렇게 답변 했어야 좋은 학생인데..... (울적)
function simpleMultiplication(number) {
if (typeof number === 'number') {
return number * (8 + number % 2);
} else {
console.log(arguments.callee.name + ': Invalid argument');
}
}