์กฐ๊ฑด๋ถ ๋ก์ง ๊ฐ์ํ
์กฐ๊ฑด๋ถ ๋ก์ง์ ํ๋ก๊ทธ๋จ์ ํ์ ๊ฐํํ๋๋ฐ ๊ธฐ์ฌํ์ง๋ง, ์ํ๊น๊ฒ๋ ํ๋ก๊ทธ๋จ์ ๋ณต์กํ๊ฒ ๋ง๋๋ ์ํ์ด๊ธฐ๋ ํ๋ค.
- DECOMPOSE CONDITIONAL
- CONSOLIDATE CONDITIONAL EXPRESSION
- REPLACE NESTED CONDITIONAL WITH GUARD CLAUSES
- REPLACE CONDITIONAL WITH POLYMORPHISM
- INTRODUCE SPECIAL CASE
- INTRODUCE ASSERTION
- Replace Control Flag with Break
10.1 ์กฐ๊ฑด๋ฌธ ๋ถํดํ๊ธฐ
if (!aDate.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd)) {
charge = quantity * plan.summerRate;
} else {
charge = quantity * plan.reqularRate + plan.reqularServiceCharge;
}
if (summer()) {
charge = summerCharge();
} else {
charge = regularCharge();
}
๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ก์ง์ ํ๋ก๊ทธ๋จ์ ๋ณต์กํ๊ฒ ๋ง๋ค๋ ๊ฐ์ฅ ํํ ์ํ์ ์ํ๋ค. ๋ค์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์๋ ๋ค์ํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์์๊ฐ์ ๊ฝค ๊ธด ์กฐ๊ฑด๋ฌธ์ด ํ์ํ๋ค. ์กฐ๊ฑด์ ๊ฒ์ฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ์ ๋ฐ๋ฅธ ๋์์ ํํํ ์ฝ๋๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ์ด์ผ๊ธฐํด์ฃผ์ง๋ง '์' ์ผ์ด๋๋์ง๋ ๋งํด์ฃผ์ง ์๋๋ค.
๊ฑฐ๋ํ ์ฝ๋ ๋ธ๋ญ์ด ์ฃผ์ด์ง๋ฉด ์ฝ๋๋ฅผ ๋ถ์๋ณ๋ก ๋ถํดํ ๋ค์ ํด์ฒด๋ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ค์ ๊ฐ ๋ฉ์ด๋ฆฌ์ ์๋๋ฅผ ์ด๋ฆฐ ์ด๋ฆ์ ํจ์ ํธ์ถ๋ก ๋ฐ๊พธ์. ๊ทธ๋ฌ๋ฉด ์ ์ฒด์ ์ธ ์๋๊ฐ ๋ ํ์คํ ๋๋ฌ๋๋ค.
- ์กฐ๊ฑด์๊ณผ ๊ทธ ์กฐ๊ฑด์์ ๋ธ๋ฆฐ ์กฐ๊ฑด์ ๊ฐ๊ฐ์ ํจ์๋ก ์ถ์ถํ๋ค.
10.2 ์กฐ๊ฑด์ ํตํฉํ๊ธฐ
if (anEmployee.seniority < 2) return 0;
if (anEmployee.monthsDisabled > 12) return 0;
if (anEmployee.isPartTime) return 0;
if (isNotEligibleForDisability()) return 0;
function isNotEligibleForDisability() {
return (
anEmployee.seniority < 2
|| anEmployee.monthsDisabled > 12
|| anEmployee.isPartTime
);
}
๋น๊ตํ๋ ์กฐ๊ฑด์ ๋ค๋ฅด์ง๋ง ๊ทธ ๊ฒฐ๊ณผ๋ก ์ํํ๋ ๋์์ ๋๊ฐ์ ์ฝ๋๋ค์ด ๋๋ฌ ์๋๋ฐ, ์ด์ฐจํผ ๊ฐ์ ์ผ์ ํ ๊ฑฐ๋ผ๋ฉด ์กฐ๊ฑด ๊ฒ์ฌ๋ ํ๋๋ก ํตํํ๋ ๊ฒ ๋ซ๋ค. ์ด๋ด ๋ 'and'์ฐ์ฐ์์ 'or'์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋น๊ต ๋ก์ง์ ํ๋๋ก ํฉ์น ์ ์๋ค.
์กฐ๊ฑด๋ถ ์ฝ๋ ํตํฉ์ ํตํด ์ฒซ์งธ, ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋ ์กฐ๊ฑด๋ค์ ํ๋๋ก ํตํฉํจ์ผ๋ก์จ ๋ด๊ฐ ํ๋ ค๋ ์ผ์ด ๋ ๋ช ํํด์ง๋ค. ๋๋ ์ ์์๋๋ก ๋น๊ตํด๋ ๊ฒฐ๊ณผ๋ ๊ฐ์ง๋ง, ์ฝ๋ ์ฌ๋์ ๋ ๋ฆฝ๋ ๊ฒ์ฌ๋ค์ด ์ฐ์ฐํ ํจ๊ป ๋์ด๋ ๊ฒ์ผ๋ก ์คํดํ ์ ์๋ค. ๋ ๋ฒ์งธ ์ด์ ๋ ์ด ์์ ์ด ํจ์ ์ถ์ถํ๊ธฐ ๊น์ง ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ๋ณต์กํ ์กฐ๊ฑด์์ ํจ์๋ก ์ถ์ถํ๋ฉด ์ฝ๋์ ์๋๊ฐ ํจ์ฌ ๋ถ๋ช ํ๊ฒ ๋๋ฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ํจ์ ์ถ์ถํ๊ธฐ๋ '๋ฌด์'์ ํ๋์ง๋ฅผ ๊ธฐ์ ํ๋ ์ฝ๋๋ฅผ '์'ํ๋์ง๋ฅผ ๋งํด์ฃผ๋ ์ฝ๋๋ก ๋ฐ๊ฟ์ฃผ๋ ํจ๊ณผ์ ์ธ ๋๊ตฌ์์ ๊ธฐ์ตํ์
- ์ฌ๋ฌ ์กฐ๊ฐ์ผ๋ก ๋๋ ์กฐ๊ฑด๋ค์ ํตํฉํจ์ผ๋ก์จ ํ๋ ค๋ ์ผ์ด ๋ ๋ช ํํด์ง
- ์ด ์์ ์ด ํจ์ ์ถ์ถํ๊ธฐ๋ก ์ด์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ํจ์ ์ถ์ถํ๊ธฐ๋ฅผ ํตํด '๋ฌด์'์ ํ๋์ง๋ฅผ ๊ธฐ์ ํ๋ ์ฝ๋๋ฅผ '์'ํ๋์ง๋ฅผ ๋งํด์ฃผ๋ ์ฝ๋๋ก ๋ฐ๊ฟ ์ ์๋ค.
- ํด๋น ์กฐ๊ฑด์๋ค ๋ชจ๋์ ๋ถ์ํจ๊ณผ๊ฐ ์๋์ง ํ์ธํ๋ค.
- ์กฐ๊ฑด๋ฌธ ๋ ๊ฐ๋ฅผ ์ ํํ์ฌ ๋ ์กฐ๊ฑด๋ฌธ์ ์กฐ๊ฑด์๋ค์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ก ๊ฒฐํฉํ๋ค.
- ํ ์คํธํ๋ค.
- ์กฐ๊ฑด์ด ํ๋๋ง ๋จ์ ๋๊น์ง 2, 3 ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ํ๋๋ก ํฉ์ณ์ง ์กฐ๊ฑด์์ ํจ์๋ก ์ถ์ถํ ์ง ๊ณ ๋ คํด๋ณธ๋ค.
- ์กฐ๊ฑด ๊ฒ์ฌ๊ฐ ์์ฐจ์ ์ด๋ผ๋ฉด
or
์ฌ์ฉ - ์กฐ๊ฑด ๊ฒ์ฌ๊ฐ if๋ฌธ์ด ์ค์ฒฉ๋๋ค๋ฉด
and
์ฌ์ฉ
- if๋ฌธ์ด ์ค์ฒฉ๋๋ ๊ฒฝ์ฐ
if (anEmployee.onVacation)
if (anEmployee.seniority > 10)
return 1;
return 0.5;
- ์์ ์กฐ๊ฑด๋ค์ and ์ฐ์ฐ์๋ก ๊ฒฐํฉํ ์
if ((anEmployee.onVacation)
&& (anEmployee.seniority > 10)) return 1;
return 0.5;
10.3 ์ค์ฒฉ ์กฐ๊ฑด๋ฌธ์ ๋ณดํธ ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ๊พธ๊ธฐ
function getPayAmount() {
let result;
if (isDead) {
result = deadAmount();
} else {
if (isSeparated)
result = separatedAmount();
else {
if (isRetired)
result = retiredAmount();
else
result = normalPayAmount();
}
}
return result;
}
function getPayAmount() {
let result;
if (isDead) return deadAmount();
if (isSeparated) return separatedAmount();
if (isRetired) return retiredAmount();
return normalPayAmount();
}
์กฐ๊ฑด๋ฌธ์ ๋ ๊ฐ์ง ํํ๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
- '์ฐธ์ธ ๊ฒฝ๋ก'์ '๊ฑฐ์ง์ธ ๊ฒฝ๋ก' ๋ชจ๋ ์ ์ ๋์์ผ๋ก ์ด์ด์ง๋ ํํ
- ๊ฒฝ๋ก ์ค ํ์ชฝ๋ง ์ ์์ธ ํํ
- ์์ ๋ ํํ๋ ์๋๊ฐ ๋ค๋ฅด๋ฏ๋ก, ์๋๊ฐ ์ฝ๋์ ๋๋ฌ๋์ผ ํจ
- ๋ ๊ฒฝ๋ก ๋ชจ๋ ์ ์ ๋์ํ๋ค๋ฉด
if else
์ ์ ์ฌ์ฉํ๋ ํํ - ํ์ชฝ๋ง ์ ์์ด๋ผ๋ฉด ๋น์ ์ ์กฐ๊ฑด์
if
์์ ๊ฒ์ฌํ ๋ค์, ์ฐธ์ด๋ฉด ํจ์์์ ๋น ์ ธ๋์ค๋ ํํ๋ฅผ ์ฌ์ฉ, ์ด ๊ฒ์ฌ๋ฅผ ๋ณดํธ ๊ตฌ๋ฌธ์ด๋ผ๊ณ ํจ
์ค์ฒฉ ์กฐ๊ฑด๋ฌธ์ ๋ณดํธ ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ๊พธ๊ธฐ ๋ฆฌํฉํฐ๋ง์ ํต์ฌ์ ์๋๋ฅผ ๋ถ๊ฐํ๋๋ฐ ์๋ค. ๋ณดํธ ๊ตฌ๋ฌธ์ '์ด๊ฑด ์ด ํจ์์ ํต์ฌ์ด ์๋๋ค. ์ด ์ผ์ด ์ผ์ด๋๋ฉด ๋ฌด์ธ๊ฐ ์กฐ์น๋ฅผ ์ทจํ ํ ํจ์์์ ๋น ์ ธ๋์จ๋ค'๋ผ๊ณ ์ด์ผ๊ธฐํ๋ค.
- ๊ต์ฒดํด์ผ ํ ์กฐ๊ฑด ์ค ๊ฐ์ฅ ๋ฐ๊นฅ ๊ฒ์ ์ ํํ์ฌ ๋ณดํธ ๊ตฌ๋ฌธ์ผ๋ก ๋ฐ๊พผ๋ค.
- ํ ์คํธํ๋ค.
- 1, 2 ๊ณผ์ ์ ํ์ํ ๋งํผ ๋ฐ๋ณตํ๋ค.
- ๋ชจ๋ ๋ณดํธ ๊ตฌ๋ฌธ์ด ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค๋ฉด ๋ณดํธ ๊ตฌ๋ฌธ๋ค์ ์กฐ๊ฑด์์ ํตํฉํ๋ค.
part.03-Replace_Nested_Conditional_With_Guard_Clauses
10.4 ์กฐ๊ฑด๋ถ ๋ก์ง์ ๋คํ์ฑ์ผ๋ก ๋ฐ๊พธ๊ธฐ
switch (bird.type) {
case '์ ๋ฝ ์ ๋น':
return '๋ณดํต์ด๋ค';
case '์ํ๋ฆฌ์นด ์ ๋น':
return (bird.numberOfCoconuts > 2) ? '์ง์ณค๋ค' : '๋ณดํต์ด๋ค';
case '๋
ธ๋ฅด์จ์ด ํ๋ ์ต๋ฌด':
return (bird.voltage > 100) ? '๊ทธ์๋ ธ๋ค' : '์์๋ค';
default:
return '์ ์ ์๋ค';
}
class EuropeanSwallow {
get plumage() {
return '๋ณดํต์ด๋ค'
}
}
class AfricanSwallow {
get plumage() {
return (this.numberOfCoconuts > 2) ? '์ง์ณค๋ค' : '๋ณดํต์ด๋ค';
}
}
class NorwegianBlueParrot {
get plumage() {
return (this.voltage > 100) ? '๊ทธ์๋ ธ๋ค' : '์์๋ค';
}
}
๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ก์ง์ ํ๋ก๊ทธ๋๋ฐ์์ ํด์ํ๊ธฐ๊ฐ ๋ํดํ ๋์์ ์ํ๋ฏ๋ก ์กฐ๊ฑด๋ฌธ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ ์ฑ ํด๊ฒฐํ ์๋ ์์ง๋ง, ํด๋์ค์ ๋คํ์ฑ์ ์ด์ฉํ๋ฉด ๋ ํ์คํ๊ฒ ๋ถ๋ฆฌํ ์๋ ์๋ค.
๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ก์ง์ ์ง๊ด์ ์ผ๋ก ๊ตฌ์กฐํํ๊ธฐ ์ํด
- ๋คํ์ ๋์์ ํํํ๋ ํด๋์ค๋ค์ด ์์ง ์๋ค๋ฉด ๋ง๋ค์ด์ค๋ค. ์ด์์ด๋ฉด ์ ํฉํ ์ธ์คํด์ค๋ฅผ ์์์ ๋ง๋ค์ด ๋ฐํํ๋ ํฉํฐ๋ฆฌ ํจ์๋ ํจ๊ป ๋ง๋ ๋ค.
- ํธ์ถํ๋ ์ฝ๋์์ ํฉํฐ๋ฆฌ ํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ํ๋ค.
- ์กฐ๊ฑด๋ถ ๋ก์ง ํจ์๋ฅผ ์ํผํด๋์ค๋ก ์ฎ๊ธด๋ค.
- ์๋ธํด๋์ค ์ค ํ๋๋ฅผ ์ ํํ๋ค. ์๋ธํด๋์ค์์ ์ํผํด๋์ค์ ์กฐ๊ฑด๋ถ ๋ก์ง ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ๋ค. ์กฐ๊ฑด๋ถ ๋ฌธ์ฅ ์ค ์ ํ๋ ์๋ธํด๋์ค์ ํด๋นํ๋ ์กฐ๊ฑด์ ์ ์๋ธํด๋์ค ๋ฉ์๋๋ก ๋ณต์ฌํ ๋ค์ ์ ์ ํ ์์ ํ๋ค.
- ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ ์กฐ๊ฑด์ ์ ํด๋น ์๋ธํด๋์ค์์ ๋ฉ์๋๋ก ๊ตฌํํ๋ค.
- ์ํผํด๋์ค ๋ฉ์๋์๋ ๊ธฐ๋ณธ ๋์ ๋ถ๋ถ๋ง ๋จ๊ธด๋ค. ํน์ ์ํผํด๋์ค๊ฐ ์ถ์ ํด๋์ค์ฌ์ผ ํ๋ค๋ฉด, ์ด ๋ฉ์๋๋ฅผ ์ถ์์ผ๋ก ์ ์ธํ๊ฑฐ๋ ์๋ธํด๋์ค์์ ์ฒ๋ฆฌํด์ผ ํจ์ ์๋ฆฌ๋ ์๋ฌ๋ฅผ ๋์ง๋ค.
part.04-Replace_Conditional_With_Polymorphism
some()
๋ฉ์๋๋ ๋ฐฐ์ด ์์ ์ด๋ค ์์๋ผ๋ ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ํต๊ณผํ๋์ง ํ
์คํธํ์ฌ true
, false
๋ฐํ
const array = [1, 3];
// checks whether an element is even
const even = (element) => element % 2 === 0;
console.log(array.some(even));
// expected output: true
์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์ 0๊ฐ ์ด์์ ์ซ์ ์ค ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๋ฐํ
Math.max(10, 20); // 20
Math.max(-10, -20); // -10
Math.max(-10, 20); // 20
10.5 ํน์ด ์ผ์ด์ค ์ถ๊ฐํ๊ธฐ
if (aCustomer === '๋ฏธํ์ธ ๊ณ ๊ฐ') customerName = '๊ฑฐ์ฃผ์'
class UnknownCustomer {
get name() { return '๊ฑฐ์ฃผ์' }
}
- ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํน์ ๊ฐ์ ํ์ธํ ํ ๋๊ฐ์ ๋์์ ์ํํ๋ ์ฝ๋์ ์ค๋ณต์ ์ค์ฌ์ ํจ์จ์ ๋์ด๊ธฐ ์ํด
- ํน์ํ ๊ฒฝ์ฐ์ ๊ณตํต ๋์์ ์์ ํ๋์ ๋ชจ์์ ์ฌ์ฉํ๋ ํน์ด ์ผ์ด์ค ํจํด์ด ์๋๋ฐ, ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํน์ ๊ฐ์ ํ์ธํ ํ ๋๊ฐ์ ๋์์ ์ํํ๋ ์ฝ๋๊ฐ ์์ ๊ฒฝ์ฐ ์ ์ฉํ๋ฉด ์ข์ ๋งค์ปค๋์ฆ์ด๋ค.์ด ํจํด์ ํ์ฉํ๋ฉด ํน์ด ์ผ์ด์ค๋ฅผ ๋จ์ํ ํจ์ ํธ์ถ๋ก ๋ฐ๊ฟ ์ ์๋ค.
- ์ปจํ ์ด๋์ ํน์ด ์ผ์ด์ค์ธ์ง ๊ฒ์ฌํ๋ ์์ฑ์ ์ถ๊ฐํ๊ณ , false๋ฅผ ๋ฐํํ๊ฒ ํจ
- ํน์ด ์ผ์ด์ค ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค. ์ด ๊ฐ์ฒด๋ ํน์ด ์ผ์ด์ค์ธ์ง๋ฅผ ๊ฒ์ฌํ๋ ์์ฑ๋ง ํฌํจํ์ฌ, ์ด ์์ฑ์ true๋ฅผ ๋ฐํํ๊ฒ ํ๋ค.
- ํด๋ผ์ด์ธํธ์์ ํน์ด ์ผ์ด์ค์ธ์ง๋ฅผ ๊ฒ์ฌํ๋ ์ฝ๋๋ฅผ ํจ์๋ก ์ถ์ถํ๋ค. ๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ์ง์ ๋น๊ตํ๋ ๋์ ๋ฐฉ๊ธ ์ถ์ถํ ํจ์๋ฅผ ์ฌ์ฉํ๋๋ก ๊ณ ์น๋ค.
- ์ฝ๋์ ์๋ก์ด ํน์ด ์ผ์ด์ค ๋์์ ์ถ๊ฐํ๋ค. ํจ์์ ๋ฐํ ๊ฐ์ผ๋ก ๋ฐ๊ฑฐ๋ ๋ณํ ํจ์๋ฅผ ์ ์ฉํ๋ฉด ๋๋ค.
- ํน์ด ์ผ์ด์ค๋ฅผ ๊ฒ์ฌํ๋ ํจ์ ๋ณธ๋ฌธ์ ์์ ํ์ฌ ํน์ด ์ผ์ด์ค ๊ฐ์ฒด์ ์์ฑ์ผ ์ฌ์ฉํ๋๋ก ํ๋ค.
- ํ ์คํธํ๋ค.
- '์ฌ๋ฌ ํจ์๋ฅผ ํด๋์ค๋ก ๋ฌถ๊ธฐ(6.9)'๋ '์ฌ๋ฌ ํจ์๋ฅผ ๋ณํ ํจ์๋ก ๋ฌถ๊ธฐ(6.10)'๋ฅผ ์ ์ฉํ์ฌ, ํน์ด ์ผ์ด์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณตํต ๋์์ ์๋ก์ด ์์๋ก ์ฎ๊ธด๋ค.
- ์์ง๋ ํน์ด ์ผ์ด์ค ๊ฒ์ฌ ํจ์๋ฅผ ์ด์ฉํ๋ ๊ณณ์ด ๋จ์ ์๋ค๋ฉด ๊ฒ์ฌ 'ํจ์๋ฅผ ์ธ๋ผ์ธ(6.2)'ํ๋ค.
part.05-Introduce_Special_Case
10.6 ์ด์์ ์ถ๊ฐํ๊ธฐ
if (this.discountRate)
base = base - (this.discountRate * base)
assert(this.discountRate >= 0);
if (this.discountRate)
base = base - (this.discountRate * base)
ํน์ ์กฐ๊ฑด์ด ์ฐธ์ผ ๋๋ง ๋์ํ๋ ์ฝ๋ ์์ญ์ด ์์ ์ ์๋ค. ์ด๋ ์ฝ๋์ ํญ์ ๋ช ์์ ์ผ๋ก ๊ธฐ์ ๋์ด ์์ง ์์์
์ํต ์ธก๋ฉด์์ ์ด์์ ์ ๋งค๋ ฅ์ ์ด๋ค.
- ์ด์์ ์ ํญ์ ์ฐธ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ์กฐ๊ฑด๋ถ ๋ฌธ์ฅ
- ์ด์์ ์คํจ๋ ์์คํ ์ ๋ค๋ฅธ ๋ถ๋ถ์์๋ ์ ๋ ๊ฒ์ฌํ์ง ์์์ผ ํจ
- ์ด์์ ์ ๋ฌด๊ฐ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ ์ ์ ๋์์ ์ํฅ์ ์ฃผ์ง ์๋๋ก ์์ฑ๋์ด์ผ ํจ
- ์ด์์ ์ ์คํจ๋ ํ๋ก๊ทธ๋จ์ ์๋ชป
์ด์์ ์ ํ๋ก๊ทธ๋จ์ด ์ด๋ค ์ํ์์ ๊ฐ์ ํ ์ฑ ์คํ๋๋์ง๋ฅผ ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ์๋ ค์ฃผ๋ ํ๋ฅญํ ์ํต ๋๊ตฌ์ธ ๊ฒ์ด๋ค. ๋๋ฒ๊น ํ๊ธฐ๋ ํธํ๊ณ ์ด๋ฐ ์ํต ์๋จ์ผ๋ก์์ ๊ฐ์น๋ ์์ด์, ๋๋ ์ถ์ ํ๋ ๋ฒ๊ทธ๋ฅผ ์ก์ ๋ค์๋ ์ด์์ ์ ์ฝ๋์ ๋จ๊ฒจ๋๊ณค ํ๋ค.
- ์ฐธ์ด๋ผ๊ณ ๊ฐ์ ํ๋ ์กฐ๊ฑด์ด ๋ณด์ด๋ฉด ๊ทธ ์กฐ๊ฑด์ ๋ช ์ํ๋ ์ด์์ ์ ์ถ๊ฐํ๋ค.
10.7 ์ ์ด ํ๋๊ทธ๋ฅผ ํ์ถ๋ฌธ์ผ๋ก ๋ฐ๊พธ๊ธฐ
for (const p of people) {
if (!found) {
if (p === '์กฐ์ปค') {
sendAlert();
found = true;
}
}
}
for (const p of people) {
if (p === '์กฐ์ปค') {
sendAlert();
break;
}
}
์ ์ด ํ๋๊ทธ๋ ์ฝ๋์ ๋์์ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ณ์๋ฅผ ๋งํ๋ฉฐ, ์ด๋๊ฐ์์ ๊ฐ์ ๊ณ์ฐํด ์ ์ด ํ๋๊ทธ์ ์ค์ ํ ํ ๋ค๋ฅธ ์ด๋๊ฐ์ ์กฐ๊ฑด๋ฌธ์์ ๊ฒ์ฌํ๋ ํํ๋ก ์ฐ์ธ๋ค. ๋ฆฌํฉํฐ๋ง์ผ๋ก ์ถฉ๋ถํ ๊ฐ์ํํ ์ ์์์๋ ๋ณต์กํ๊ฒ ์์ฑ๋ ์ฝ๋์์ ํํ ๋ํ๋๋ค.
๋งํด ํ์ธ๋ฌ๋ ์ ์ด ๋ณ์๋ฅผ ํญ์ ์ ์ทจ๋ก ๋ณธ๋ค.
์ ์ด ๋ณ์ ๋์ break
, return
์ ์ฌ์ฉํด ๊ตฌ๋ฌธ์ ๊ฐ์ํํ๊ธฐ ์ํด
- ์ ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ํจ์๋ก ์ถ์ถํ ์ง๋ฅผ ๊ณ ๋ คํ๋ค.
- ์ ์ดํ๋๊ทธ๋ฅผ ๊ฐฑ์ ํ๋ ์ฝ๋ ๊ฐ๊ฐ์ ์ ์ ํ ์ ์ด๋ฌธ์ผ๋ก ๋ฐ๊พผ๋ค. ํ๋ ๋ฐ๊ฟ ๋๋ง๋ค ํ ์คํธํ๋ค.
- ๋ชจ๋ ์์ ํ๋ค๋ฉด ์ ์ด ํ๋๊ทธ๋ฅผ ์ ๊ฑฐํ๋ค.
some
๊ณผ includes
๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์ค์
for (const p of people) {
if (p === 'joker') {
return sendAlert();
}
if (p === 'ham') {
return sendAlert();
}
}
if (people.some(p => ['joker', 'ham'].includes(p))) return sendAlert();