function fizzBuzz(num) { if (num %3 === 0 && num %5 ===0){ return 'FizzBuzz' } else if (num %5 === 0){ return 'Buzz' } else if (num %3 === 0){ return 'Fizz' } else {return 'No FizzBuzz'} }
그대로 썼는데 순서를 바꿨더니 적용 되었다. 벤다이어그램을 생각하며 교집합을 먼저 빼내도록 하자!
<해설>
조건문 작성은 순서가 매우 중요합니다. 특히 서로 "겹치지 않고 빠짐없이 나눠지지 않는" 경우가 그렇습니다. 3의 배수인 것과 5의 배수인 것은 겹치는 것이 있습니다. 15인 경우가 그렇습니다. 이렇게 두 조건이 겹치는 경우는 따로 분리해서 (3의 배수인 경우 && 5의 배수인 경우) 에만 특정 코드가 작동할 수 있도록 조건문을 작성해야 합니다.
모든 보기가 잘 작성했는데, 왜 문제가 풀리지 않을까요? 3의 배수인 경우, 혹은 5의 배수인 경우를 먼저 검사하면 (3의 배수인 경우 && 5의 배수인 경우)에 'FizzBuzz'가 나와야 하는데, 'Fizz' 혹은 'Buzz'를 리턴하게 되기 때문입니다.
그래서 (3의 배수인 경우 && 5의 배수인 경우)를 가장 먼저 검사한 2번이 정답입니다.
===
을 사용해야하는데 =으로 사용해서 틀린 경우도 많았다
비교연산자를 사용할 때에도 (1<= month <=12)이렇게 쓰면 안되는데 한번에 붙여서 써서 틀렸다. 올바른 방법은 (1<= month && month <=12)
이다.
!하나를 안써서 틀린 문제도 있다 문제를 꼼꼼하게 읽자!
function dropLetters(num, str) { return str.slice(num,str.length) }
개발자도구를 만지다가 나왔다.
문자열과 숫자를 같이 return값으로 쓸 때 +
를 안붙여서 틀린 것도 있다.