์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ Chapter 5
๐ ์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ - ์ฌํํ ์ฝ๋๋ก ๋ณต์กํ ์ํํธ์จ์ด ๊ธธ๋ค์ด๊ธฐ
์ด ๊ธ์ ์์ ๋ค์ด์ค๋ ํจ์ํ ์ฝ๋ฉ - ์ฌํํ ์ฝ๋๋ก ๋ณต์กํ ์ํํธ์จ์ด ๊ธธ๋ค์ด๊ธฐ๋ฅผ ์ฝ๊ณ ์์ฑํ ๊ธ์ ๋๋ค. ํจ์ํ๋ ํจ์ํ์ด์ง๋ง, ์ด ์ฑ ์ ํตํด ์ข๋ ๊น๋ํ๊ณ ์ง๊ด์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ ๊ฒ์ด๋ ํ์๋ค์ ์๊ฒฌ์ ํ ๋๋ก ์ด๋ฒ ์คํฐ๋ ์์ ์ผ๋ก ์ ์ ํ์์ต๋๋ค.
Chap 5. ๋ ์ข์ ์ก์ ๋ง๋ค๊ธฐ
- ์๋ฌต์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ ๊ฑฐํด์ ์ฌ์ฌ์ฉํ๊ธฐ ์ข์ ์ฝ๋ ๋ง๋ค๊ธฐ
- ๋ณต์กํ๊ฒ ์ํจ ์ฝ๋๋ฅผ ํ๊ณ ๋ ์ข์ ์ฝ๋ ๋ง๋ค๊ธฐ
๋ชจ๋ ์ก์ ์ ์์จ ์๋ ์๋ค. ์ก์ ์ ํ์ํ๋ค. ํ์ง๋ง ์๋ฌต์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ค์์ผ๋ก์จ ์ก์ ์ ์ต์ํํ ์ ์๋ค.
1) ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ์ค๊ณ ๊ณ ๋ คํ๊ธฐ
- ๊ธฐ๊ณ์ ์ธ ๋ฆฌํฉํ ๋ง๋ง์ด ํญ์ ์ต์ ์ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด์ฃผ์ง ์๋๋ค.
- ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํด์ผ ํ๋ค.
๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ: ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ์ ํ์ ์ฃผ๋ฌธํ ๋ ๋ฌด๋ฃ ๋ฐฐ์ก์ธ์ง ํ์ธํ๋ ๊ธฐ๋ฅ
์๋ ํจ์๋ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ธ ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธด ์ ํ
์ ๋ํ ๋ด์ฉ ์์ด ์ด์ก
๊ณผ ๋ฌด๋ฃ๋ฐฐ์ก
์ ๋ํ ๋ด์ฉ๋ง์ ๊ฐ์ง๊ณ ์๋ค.
function getFreeShipping(total, itemPrice) {
return total + itemPrice >= 20;
}
์ด๋ฅผ ์ข๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ง๊ฒ ๊ฐ์ ํ๋ฉด ์๋์ ๊ฐ๋ค.
function getFreeShipping(cart) {
return getTotalPriceFromCart(cart) >= 20;
}
function getTotalPriceFromCart(cart) {
return cart.reduce((result, item) => result + item.price, 0);
}
์ฌ์ค ์์ ๊ฒฝ์ฐ, ํจ์์ ๋์
์ ๋ณ๊ฒฝํ๊ธฐ ๋๋ฌธ์ ์๋ฐํ ๋งํ๋ฉด ๋ฆฌํฉํ ๋ง
์ด๋ผ๊ณ ํ ์ ์๋ค.
Tip1) ๋ฆฌํฉํ ๋ง(ํจ์ ๋ถ๋ฆฌ)์ ํ๋ค๋ณด๋ฉด ์ฝ๋๊ฐ ๋ ๊ธธ์ด์ง๊ธฐ๋ ํ๋๋ฐ, ๊ด์ฐฎ์๊ฑด๊ฐ?
- ํจ์๋ฅผ ๋ถ๋ฆฌํจ์ผ๋ก์จ ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ๋์์ง๊ณ , ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ธธ์ด๊ฐ ๋์ด๋๋๋ผ๋ ์ข์ ์ฝ๋๋ผ๊ณ ํ ์ ์๋ค.
Tip2) ๋ถ๋ณ์ฑ ์ ์ง๋ฅผ ์ํด ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ ์คํ๋ ค ๋น์ฉ์ ๋ง์ด ์ฐ์ง ์๋?- ๊ตณ์ด ๋น๊ตํ์๋ฉด ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ์๋ณด๋ค๋ ๋น์ฉ์ด ๋ ๋ ๋ค. ํ์ง๋ง ํ๋์ ์ธ์ด ๋ฐํ์๊ณผ ๊ฐ๋น์ง ์ปฌ๋ ํฐ๋ ์ด๋ฅผ ์ต์ ํํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค. ๋ํ, ์ด์ ๋ฐํด ๋ถ๋ณ์ฑ์ ์ ์งํ์ ๋ ์ป๋ ์ด์ ์ด ๋๋ฌด ํฌ๋ค.
2) ์๋ฌต์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ ์ผ๋ฉด ์ ์์๋ก ์ข๋ค!
- ์๋ฌต์ ์
๋ ฅ: ์ ์ญ๋ณ์๋ฅผ ์ฝ๋ ๋ฑ
์ธ์ ์ธ์ ๋ค๋ฅธ ๋ชจ๋ ์ ๋ ฅ๊ฐ
- ์๋ฌต์ ์ถ๋ ฅ: console.log(), DOM ๋ณ๊ฒฝ, ์ ์ญ๋ณ์ ๋ณ๊ฒฝ ๋ฑ
๋ฐํ๊ฐ ์ธ์ ๋ค๋ฅธ ๋ชจ๋ ์ถ๋ ฅ๊ฐ
์ด๋ค ํจ์(์ปดํฌ๋ํธ)์ ์๋ฌต์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์๋ค๋ฉด, ๋ค๋ฅธ ํจ์(์ปดํฌ๋ํธ)์ ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋ ์ปดํฌ๋ํธ๊ฐ ๋๋ค. ์ด๋ ์ฌ์ฌ์ฉ์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ , ํ
์คํธํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค.
๋ํ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋
์ด๋ผ๊ณ ํ ์ ์๋ค. ์๋ฌต์ ์ธ ๊ฒ๋ค์ ๋ช
์์ ์ผ๋ก ๋ณ๊ฒฝํจ์ผ๋ก์จ ๋ชจ๋ํํ ์ ์๋ค.
๊ณ์ฐ: ์๋ฌต์ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์๋ ํจ์ => ๋ชจ๋ํ ๊ฐ๋ฅ ๋ฐ ํ ์คํธํ๊ธฐ ์ข๋ค.
3) ์ค๊ณ๋ ์์ผ์๋ ์ฝ๋๋ฅผ ํธ๋ ๊ฒ์ด๋ค.
- ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
- ํจ์๋ ์ธ์์ ๋ฐํ๊ฐ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ถ๋ฆฌํ๋ค.(๋๋ฌด๋ ์์ฐ์ค๋ฝ๊ฒ input๊ณผ output์ ๋๋๊ฒ ๋๋๊น)
- ๋๋ก๋ ํจ์๋ฅผ ํฉ์น๊ณ ์ถ์ ์ ์๋ค. ๊ทธ๋ฌ๋ ์กฐํฉํ๋ ๊ฒ์ ์ธ์ ๋ ์ฝ๊ฒ ํ ์ ์์ง๋ง, ๋ถ๋ฆฌํ๋ ๊ฒ์ ์ด๋ ต๋ค. ์ฆ, ๊ฐ๋ฅํ๋ฉด ํจ์๋ฅผ ๋ถ๋ฆฌํด๋๋ ๊ฒ์ด ๋ ์ข๋ค.
ํจ์๋ฅผ ์๊ฒ ๋ถ๋ฆฌํด๋์์ ๋์ ์ด์
- ์ฌ์ฌ์ฉํ๊ธฐ ์ฝ๋ค.
- ์ ์ง๋ณด์ํ๊ธฐ ์ฝ๋ค.
- ํ ์คํธํ๊ธฐ ์ฝ๋ค.
4) ํจํด ๋นผ๋ด๊ธฐ(์ ํธ ํจ์ ๋ง๋ค๊ธฐ)
๋ง์ฝ ์๋์ ๊ฐ์ ํจ์๊ฐ ์กด์ฌํ๋ค๊ณ ํด๋ณด์.
function addItem(cart, item) {
let newCart = [...cart];
newCart.push(item);
return newCart;
}
์ ์๊ฐํด๋ณด์. ์์ ํจ์๋ ๊ณผ์ฐ cart(์ฅ๋ฐ๊ตฌ๋)
์๋ง ํ์ ๋ ํจ์์ธ๊ฐ??? ์๋๋ค. ์๋ก์ด ๋ฐฐ์ด(cart)์ ์๋ก์ด ๊ฐ(item)์ ์ถ๊ฐํ๋ ์ ํธ ํจ์
์ด๋ค. ๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.
function addItem(array, item) {
let newArray = [...array];
newArray.push(item);
return newArray;
}
์ด๋ก์จ ์๋ฏธ์ ์ผ๋ก ์ข๋ ๋ค์ํ ๊ณณ์์ ํ์ฉํ ์ ์๋ ์ ํธ ํจ์
๋ฅผ ๋ง๋ค์๋ค.
Tip1) ์ฝ๋์์ ๋น์ฆ๋์ค ๋ก์ง์ ์ด๋ป๊ฒ ๊ตฌ๋ถํ ์ ์๋๊ฐ?
- ์๋ฅผ ๋ค์ด
์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ฝ๋
๋ ๋๋ถ๋ถ์ ์ ์์๊ฑฐ๋ ์๋น์ค์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ค. ์ฆ, ๊ทธ ์๋น์ค๋ง์ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.- ๋ฐ๋ฉด
์ด ๊ฐ๊ฒฉ์ด 50,000์์ด ๋์ด๊ฐ ๋๋ ๋ฐฐ์ก๋น๊ฐ ๋ฌด๋ฃ
๋ผ๋ ๊ธฐ๋ฅ์ ๊ทธ ์๋น์ค๋ง์ ๋ก์ง์ด๋ค. ์ฆ, ๊ทธ ์๋น์ค๋ง์ ๋น์ฆ๋์ค ๋ก์ง์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.- ์ผ๋ฐ์ ์ผ๋ก
๋น์ฆ๋์ค ๋ก์ง
์ ๋ด๋นํ๋ ์ฝ๋๋ ๋ ์์ฃผ ๋ฐ๋๋ค.(๊ธฐํ์ ๋ฐ๋ผ์ ์ธ์ ๋ ๋ณ๊ฒฝ๋๋๊น) ๋ฐ๋ฉด์ ์ ํธ ํจ์๋ ๊ทธ๋ ์ง ์๋ค.
5) ์ ๋ฆฌ
- ์ผ๋ฐ์ ์ผ๋ก ์๋ฌต์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋ช
์์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ธ
์ธ์์ ๋ฆฌํด๊ฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ ์ข๋ค.
- ์ฝ๋๋ฅผ ์ค๊ณํ๋ ๊ฒ์ ์์ผ์๋ ๊ฒ์ ํธ๋ ๊ฒ์ด๋ค. ์ต๋ํ ๋ง์ด ํ์ด๋๋ฉด ์ธ์ ๋ ์ฝ๊ฒ ์กฐํฉํ ์ ์๋ค.
- ์์ผ์๋ ๊ฒ์ ํ์ด ๊ฐ ํจ์๊ฐ ๊ฐ์ ํ๋์ ์ฑ ์, ์ญํ ์ ๊ฐ๊ฒ ํ๋ฉด ๊ฐ๋ ์ ๊ธฐ์ค์ผ๋ก ์ฝ๊ฒ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค.(ex. ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ, ๋ฐฐ์ก๋น ๊ธฐ๋ฅ, ํ ์ธ ๊ธฐ๋ฅ, ์ ํธ ํจ์ ๋ฑ)