if / else if / else
if (n % 15 === 0) return 'FizzBuzz';
if (n % 3 === 0) return 'Fizz';
if (n % 5 === 0) return 'Buzz';
return String(n);
더 구체적인 조건을 위에 둡니다. 15의 배수를 나중에 두면 3 또는 5에 먼저 걸립니다.
truthy / falsy
falsy: false, 0, '', null, undefined, NaN.
그 외는 대체로 truthy ('0', [], {} 포함).
if (tokens.length) { /* 비어 있지 않음 */ }
if (!s.trim()) return ''; // 공백만
빈 배열 []는 truthy입니다. 길이로 검사하세요.
&& 와 || (단락 평가)
const x = a && b; // a가 falsy면 a, 아니면 b
const y = a || b; // a가 truthy면 a, 아니면 b
const z = a ?? b; // a가 null/undefined일 때만 b
기본값에는 ??가 ||보다 안전합니다. 0이나 ''를 유효 값으로 남길 때요.
삼항 연산자
return score >= 60 ? 'pass' : 'fail';
중첩 삼항은 읽기 어렵습니다. 조건이 셋 이상이면 if로 푸세요.
switch
문자열·숫자 분기가 많을 때 유용합니다. break를 빼먹으면 fall-through가 납니다.
switch (op) {
case '+': return a + b;
case '-': return a - b;
default: return 0;
}
실전 패턴: 가드절
function solve(input) {
const s = input.trim();
if (!s) return "0";
const n = Number(s);
if (!Number.isFinite(n)) return "err";
// 본 로직
}
에러·빈 값을 위에서 끊으면 아래가 단순해집니다.
De Morgan
!(a && b) ≡ !a || !b
복잡한 부정 조건을 풀어서 읽으세요.
연습
FizzBuzz를 solve로: 입력 n, 출력 규칙 문자열.
15 배수를 반드시 먼저 검사했는지 예제 15, 3, 5, 1로 확인.