์์ํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ JS ๋งค๊ฐ ๋ณ์ ํ์ฉ๋ฒ 2๊ฐ์ง
์์ํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ JS ๋งค๊ฐ ๋ณ์ ํ์ฉ๋ฒ 2๊ฐ์ง ๊ด๋ จ
IT ์ง์์ด ๋ฌด์๋ณด๋ค ์ค์ํด์ง ์์ฆ, ์ฌ๋ฌ๋ถ์ ์ด๋ป๊ฒ ๊ณต๋ถํ๊ณ ์๋์? ๊ฐ์ฅ ๋จผ์ ๋๊ธธ์ด ๊ฐ๋ ๊ฑด ๋ค์ํ IT ๊ฐ์ ์์์ผ ๊ฒ๋๋ค. ๊ฐ์๋ฅผ ์ ๊ณตํ๋ ๊ต์ก ๊ธฐ์ ๋ค๊ณผ ํจ๊ป, ์์ฆIT์์ โIT ๊ฐ์ ์๋ฆฌ์ฆโ๋ฅผ ์ค๋นํ์ต๋๋ค. ์์ ํ ๊ต์ก ์์์ ํ ์คํธ๋ก ์ฝ๊ณ ํ์ํ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ์ธ์.
์ด๋ฒ ๊ฐ์๋ โWeb ๊ฐ๋ฐ์ ๋ถํธ์บ ํ 2024: JavaScript์ ์ต์ ๊ธฐ๋ฅ๋คโ์ ๋๋ค. ๊ฐ๋ฐ์์ด์ ๋ถํธ์บ ํ ๊ฐ์ฌ๋ก ํ๋ํ๋ฉฐ ์ ์ธ๊ณ 175๋ง ๋ช ์ด์ ์๊ฐ์์ ๋ฐฐ์ถํ ์ฝํธ ์คํธ(Colt Steele) ๋์ด ๊ฐ์๋ฅผ ๋งก์์ต๋๋ค. ์์ํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํด ์ฝ๋ ์์ฑ์ ๋์์ด ๋๋ JavaScript ๊ธฐ๋ฅ์ ์๊ฐํฉ๋๋ค. ์์ด๋ก ์งํํ ๊ฐ์์ ๋ฒ์ญ๋ณธ์ ๊ธฐ์ด๋ก ๊ธ์ ๊ตฌ์ฑํ๊ณ , ์ ์ฒด ์์์ ์ ๋ฐ๋ฏธ์์ ํ์ธํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์, ๊ฐ๋ฅด์น๋ ์ผ์ ์ง์ฌ์ผ๋ก ์ฌ๋ํ๋ ๊ฐ๋ฐ์ ์ฝํธ ์คํธ์ ๋๋ค. ์ด๋ฒ ๊ฐ์์์๋ JavaScript์ ๋ช ๊ฐ์ง ์ ์ฉํ ๊ตฌ๋ฌธ์ ์ดํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ๋ค์ ๊ฝค ์ ์ฉํด ํธํ๊ฒ ์ฝ๋๋ฅผ ์ธ ์ ์๋๋ก ๋์์ ์ค ๊ฒ๋๋ค. ๊ฐ์ฅ ๋จผ์ ๋ค๋ฃฐ ์ฃผ์ ๋ ๋งค๊ฐ ๋ณ์์ ๋๋ค.
์์ํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ JS ์๋ฆฌ์ฆ
๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์(Default Params) ์ฝ๊ฒ ์ฐ๊ธฐ
๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์์ ์ญํ ์ ๋ฌด์์ผ๊น?
์ฐ์ ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์(Default Params)๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํจ์๋ฅผ ์ธ ๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ง ์ ํํ ์ ์์ต๋๋ค. ๋ง์ฝ ๋งค๊ฐ ๋ณ์๊ฐ ์์ผ๋ฉด ๊ทธ ๊ฐ์ ์ฌ์ฉํ๊ณ , ์๋ค๋ฉด ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐ์ต๋๋ค.
์ฌ๊ธฐ ์์ ํจ์, โrollDieโ๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. ์ด ํจ์๋ ์ฃผ์ฌ์ ๋ฉด์ ์๋ฅผ ์ ๋ ฅ๊ฐ์ผ๋ก ๋ฐ์๋ค์ ๋๋ค. ์ ๋ ฅ๊ฐ์ผ๋ก๋ numSides๋ฅผ ํธ์ถํ ๊ฒ์. ์ฃผ์ฌ์๋ ์ก๋ฉด์ฒด, ์ญ๋ฉด์ฒด, ์ด์ญ๋ฉด์ฒด์ผ ์๋ ์์ฃ . ๋ฉด์ ์๋ ๋ช ๊ฐ๋ ์ง ์๊ด ์์ต๋๋ค.
function rollDie(numSides) {
return Math.floor(Math.random() * numSides) + 1
}
์ฃผ์ฌ์๊ฐ ๋๋ค์ผ๋ก ๊ตด๋ฌ๊ฐ ์ ์๋ ํจ์๋ฅผ ๋ฃ๊ณ ์ฝ์์์ ์ถ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค.
์ ๋ ฅ ์นธ์ 6์ ๋ฃ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ฉด 1๋ถํฐ 6๊น์ง ์ซ์๋ฅผ ์ถ๋ ฅํ ๊ฒ๋๋ค. 20์ ๋ฃ์ผ๋ฉด 1๋ถํฐ 20๊น์ง ์ถ๋ ฅํฉ๋๋ค. ์์ ์๊ด์์ด ๋๊ฐ์ด ์๋ํ๋ค๋ ๊ฑธ ์ ์ ์์ฃ .
๋ง์ฝ ์ฌ์ฉ์๊ฐ ๊ฐ์ ์ง์ ํ์ง ์๊ณ ๋ํดํธ ๊ฐ์ผ๋ก ํจ์๋ฅผ ์ ์ธํ๋ฉด ์ด๋จ๊น์? ๋ด์ฌ ์ ๊ธฐ๋ณธ๊ฐ์ด 6์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค. ์ก๋ฉด์ฒด ์ฃผ์ฌ์๊ฐ ๊ฐ์ฅ ํํ๋๊น์. ๊ดํธ ์์ ์๋ฌด๊ฒ๋ ๋ฃ์ง ์๊ณ ๋ฐ๋ก ์ถ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค. ์ ๊ธฐ๋์ ๋ค๋ฅด๊ฒ, ๊ฐ์ ๋ฃ์ง ์์ผ๋ฉด โNaNโ์ด ๋์ต๋๋ค. ์ซ์๊ฐ ์๋๋ผ๋ ๋ป์ด์ฃ . ๊ธฐ๋ณธ๊ฐ์ ์ ์ํ์ง ์์์ผ๋๊น ๋น์ฐํ ๊ฒฐ๊ณผ์ ๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ๋ ์๋ฌด๊ฒ๋ ์ ์ํ์ง ์์ ์ํ์์ ๋๋ค ํจ์๋ฅผ ๊ณฑํ์ต๋๋ค. ๊ทธ๋์ ๊ฒฐ๊ณผ๊ฐ์ด ์ซ์๊ฐ ์๋๋ผ๊ณ ๋์๊ณ , ๋น์ฐํ ์ด๋ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ์๋๋๋ค.
์ ํต์ ์ธ ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์ ์ ์๋ฒ
rollDie
ํจ์์ ๊ธฐ๋ณธ๊ฐ์ ํ ๋ฒ ์ค์ ํด ๋ณผ๊ฒ์. ์ธ๋ป ๋ ์ค๋ฅด๋ ๋๋ก ์ ์ผ๋ฉด ์ด๋ ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
function rollDie(numSides) {
if (numSides === undefined) {
numSides 6
}
return Math.floor(Math.random() * numSides) + 1;
}
numSides๋ฅผ ์ ์ํ์ง ์์์ ๋, numSides ๊ฐ์ 6์ด๋ผ๊ณ ํ์ต๋๋ค. ์๋ฌด ๊ฐ์ ๋ฃ์ง ์๊ณ ์ถ๋ ฅํ๋ฉด ์ด๋จ๊น์? ๊ธฐ๋ณธ๊ฐ์ธ 6์ผ๋ก ์ค์ ํ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ๋๋ค. ๋ค๋ฅธ ๊ฐ์ ๋ฃ์ผ๋ฉด, ์ ๊ฐ์ ๋ง์ถฐ ์ถ๋ ฅํ ๊ฒ๋๋ค.
๋ฑํธ๋ก ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์ ์ง์ ํ๊ธฐ
๋ค๋ง ์ด๋ JavaScript์ ์๋ ๋ฐฉ์์ผ๋ก, ์ข ์ฑ๊ฐ์ญ๋๋ค. ํนํ ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ฟ ์์ผ๋ฉด ์ข์ ๋ฐฉ๋ฒ์ด ์๋๋๋ค. ์ด์ ์๋ก์ด ๊ตฌ๋ฌธ์ ์ฌ์ฉํด ์์ฑํด ๋ด ์๋ค. ๋ฑํธ์ ๊ธฐ๋ณธ ๊ฐ์ ๋งค๊ฐ๋ณ์ ๋ชฉ๋ก์ ๋ฃ์ด์ค ๊ฒ๋๋ค.
์์ โrollDieโ ํจ์๋ฅผ ๋ค์ ์จ ๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ์กด ๋ด์ฉ์ ๋ชจ๋ ์ง์ฐ๊ณ ์. ๊ฐ๋จํฉ๋๋ค. numSides
์ ์์ โ= 6โ์ ์
๋ ฅํ๋ฉด ๋์ด์ฃ . ์ฝ๊ธฐ๋ ์ฝ๊ณ ๊ฐ๋จํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ด ํจ์ฌ ์ข์ต๋๋ค.
function rollDie(numSides = 6) {
return Math.floor(Math.random() * numSides) + 1;
}
ํ์ธํด ๋ณผ๊ฒ์. 20์ ์ ๋ ฅํ๋ฉด ์ด์ญ๋ฉด์ฒด ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฐ ๊ฐ์ด, ์๋ฌด๊ฒ๋ ๋ฃ์ง ์์ผ๋ฉด ์ก๋ฉด์ฒด ์ฃผ์ฌ์๋ฅผ ๊ตด๋ฆฐ ๊ฐ์ด ๋์ต๋๋ค.
๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์์ ์์๋ ์ด๋ป๊ฒ ์ ํด์ผ ํ ๊น?
๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์๋ ์ฌ๋ฌ ๊ฐ ์ธ ์ ์์ต๋๋ค. ๋ค๋ง ์์๋ฅผ ์กฐ์ฌํด์ผ ํฉ๋๋ค.
์๋ก์ด ํจ์๋ฅผ ์จ ๋ณผ๊ฒ์. ์ข ์ด์ํ ํจ์๊ฐ ๋ ํ ์ง๋ง์. ์ด ํจ์์ ์ด๋ฆ์ greet์ ๋๋ค. ํจ์์๋ ๋ฉ์์ง์ ์ฌ๋ ์ด๋ฆ์ ๋ฃ๊ฒ ์ต๋๋ค. ๊ฐ๋จํ ๊ฑธ ์ถ๋ ฅํด ๋ณด์ฃ . ๋ฉ์์ง, ์ผํ, ์ฌ๋ ์ด๋ฆ์ ๋ฐํํ๊ณ , ๋๋ํ๋ ๋ฃ๊ฒ ์ต๋๋ค.
function greet(msg, person) {
console.log(`${msg}, ${person}!`);
}
๋ง์ฝ โ์๋ ํ์ธ์(HELLO)โ๋ผ๊ณ ๋ฉ์์ง๋ฅผ ๋ฃ๊ณ ์ฌ๋ ์ด๋ฆ์ โํธ์ํจ(Joaquin)โ์ด๋ผ๊ณ ํ๋ค๋ฉด, ๊ณง โ์๋ ํ์ธ์, ํธ์ํจ(HELLO, Joaquin)โ์ด ๋์ฌ ๊ฒ๋๋ค. ๋๋ํ๋ ๋ถ์ ํ ๊ณ ์. ๋ฐ๋ฉด ์ธ์ฌ๋ง์ โํ์ด ํ์ด๋ธ(Up Top Big Guy)โ๋ก ๋ฐ๊พธ๋ฉด โํ์ดํ์ด๋ธ, ํธ์ํจ!(Up Top Big Guy, Joaquin!)โ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๋ฉ์์ง์ ๊ธฐ๋ณธ๊ฐ, โ์๋ (Hey there)โ์ ๋ถ์ฌํด ๋ณด๊ฒ ์ต๋๋ค. =์ ์จ์์. ๋ฉ์์ง์ ์ฌ๋ ์ด๋ฆ์ ๋ชจ๋ ํธ์ถํ๋ฉด, ์ํ๋ ๊ฐ โ์๋ ํ์ธ์, ํธ์ํจ(Hey there, Joaquin)โ์ด ๋์ฌ ๊ฒ๋๋ค. ๊ทธ๋ ๋ค๋ฉด โํธ์ํจ(Joaquin)โ์ด๋ผ๋ ๊ฐ๋ง ๋ฃ์ผ๋ฉด ์ด๋จ๊น์? ๊ณง ๋ฌธ์ ์ ์ ๋ฐ๊ฒฌํ ๊ฒ๋๋ค.
JavaScript๋ โํธ์ํจโ์ด ์ฌ๋ ์ด๋ฆ์ด๋ผ๋ ๊ฑธ ๋ชจ๋ฅด๊ธฐ์ ๋ฉ์์ง์ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ์ง ์์์ต๋๋ค. ์์๊ฐ ๋ง์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํจ์์ ์ฌ๋ ์ด๋ฆ์ ๋จผ์ ๋ฃ์์ฃ . ํ์ง๋ง ์ฒซ ๋ฒ์งธ ์นธ์ ๋ฉ์์ง๊ฐ ๋์ฌ ์นธ์ ๋๋ค.
๋น์ฐํ ๊ฒฐ๊ณผ๋ ๊ทธ๋ ๊ฒ ๋์์ฃ . ๋ฐ๋ผ์ ์ฌ๋ ์ด๋ฆ์ ๋จผ์ ๋ฃ์ผ๋ ค๋ฉด ๋ค๋ฅธ ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ ๋ฒ์งธ๋ ์ธ ๋ฒ์งธ์ ๋ฃ์ด์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๋งค๊ฐ๋ณ์ ๋ค์ ์์ด์ผ ํ์ฃ . ๊ทธ๋์ ์์๊ฐ ์ค์ํฉ๋๋ค. ๋งค๊ฐ๋ณ์๋ฅผ ๋ ๋ฃ์ด๋ ์ข์ต๋๋ค. โpuncโ๋ผ๊ณ ์ ๋ ฅํด ๋ณด์ฃ . ๋ํดํธ ๊ฐ์ผ๋ก ๋๋ํ ํ๋๋ฅผ ์ง์ ํฉ์๋ค.
function greet(person, msg="Hey there", punc='!') {
console.log(`${msg), ${person}${punc}`);
}
ํจ์๋ฅผ ํธ์ถํ๊ณ ์ด๋ฒ์ โ๋ก์ฌ(Rosa)โ๋ฅผ ์ถ๋ ฅํด ๋ณด๊ฒ ์ต๋๋ค. โ์๋ , ๋ก์ฌ(Hey there, Rosa!)โ๋ฅผ ์ถ๋ ฅํ๊ณ ๋๋ํ๋ ๋์์ต๋๋ค. ์ด๋ฒ์๋ ๋ ๋ค๋ฅธ ์ธ์ฌ๋ง(Hiya)์ ๋ฃ๊ณ ๋ฌธ์ฅ๋ถํธ๋ ๋ฃ๊ฒ ์ต๋๋ค. ๋๋ํ๋ฅผ ๋ง์ด ๋ฃ์ด ๋ณผ๊น์? ๊ฒฐ๊ณผ๋ ์ด๋ ์ต๋๋ค.
์ด๋ ๊ฒ ๋ฑํธ๋ฅผ ์ฌ์ฉํด์ ๋ํดํธ ๊ฐ์ ์ง์ ํด ๋ดค์ต๋๋ค. ๊ธด ๊ตฌ๋ฌธ์ผ๋ก ์ง์ ๊ธฐ๋ณธ๊ฐ์ ์ฐ๋ ๊ฒ๊ณผ ๋น๊ตํ๋ฉด ์๋นํ ๋ฐ์ ํ ๊ฒ์ ๋๋ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํ์ฉํด ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํด ๋ณด์ธ์.
๋๋จธ์ง ๋งค๊ฐ ๋ณ์(REST Params)
์ด์ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ฅผ ๋ด ์๋ค. ๊ทธ์ ์์ ์ด๋ฅผ ์ดํดํ๋ ค๋ฉด ์ฐ์ ์ธ์ ๊ฐ์ฒด์ ๋ํด์ ์์์ผ ํฉ๋๋ค.
ํจ์๋ก ์ ๋ฌํ๋ ๊ฐ: ์ธ์ ๊ฐ์ฒด
์ง๊ธ๊น์ง ํจ์๋ฅผ ๋ง๋ค ๋, ์ฐ๋ฆฌ๋ ์ ๊ธฐํ ๊ฐ์ ์ ๊ทผํ์ต๋๋ค. ์ด ์ ๊ธฐํ ๊ฐ, ์ธ์ ๊ฐ์ฒด๋ผ๋ ๊ฐ์ ํจ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ธ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๋น์ทํด ๋ณด์ฌ์ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ผ๊ณ ๋ ๋ถ๋ฆ
๋๋ค. ์ด๋ฐ ์์์ ์ ๊ทผํ๋ ค๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์น ๋ฐฐ์ด์ฒ๋ผ ์๋ํ๋ ๊ฒ ๊ฐ์ง๋ง ์ค์ ๋ก ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. push
, pop
, reduce
๋ฉ์๋ ๋ฑ์ ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์ด์ฃ .
๊ทธ๋ผ ์ด ์ธ์ ๊ฐ์ฒด๋ ๋ฌด์์ ํฌํจํ๋ฉฐ, ๊ทธ ์ญํ ์ ๋ญ๊น์? ์ธ์ ๊ฐ์ฒด๋ ํจ์๋ก ์ ๋ฌ๋๋ ์ธ์๋ฅผ ๋ชจ๋ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์์๋ก ๊ฐ์ด ๋ณด๊ฒ ์ต๋๋ค.
๋ฐฐ์ด ๊ฐ์ง๋ง ๋ฐฐ์ด์ ์๋
๋จผ์ sum ํจ์๋ฅผ ์ ์ธํ๊ฒ ์ต๋๋ค. ๊ดํธ ์์ ์ธ์๋ ๋ฃ์ง ์๊ฒ ์ต๋๋ค. ์๋ฌด ์ธ์๋ ์ ๋ฌํ๋๋ก ๊ทธ๋ฅ ๋๊ณ ์ธ์ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์ arguments๊ฐ ์ธ์ ๊ฐ์ฒด์ ๋๋ค.
function sum() {
console.log(arguments)
}
์ด ์ธ์ ๊ฐ์ฒด๋ ๋ชจ๋ ์ธ์๋ฅผ ์๋์ผ๋ก ๋ชจ์ ์ค๋๋ค. ์ด๋ฏธ์ง ์๋จ์ฒ๋ผ sum์ ํธ์ถํด ๋ณผ๊น์? ์๋ฌด๊ฒ๋ ์์ ๊ฒ๋๋ค. ์ธ์ ๊ฐ์ฒด๊ฐ ๋น์ด ์์ผ๋๊น์.
๋ฐ๋ฉด sum์ ํธ์ถํ ๋ ์ธ์ 34, 65, 77์ ๋ฃ์ผ๋ฉด ์ด๋จ๊น์? ์ด ๊ฐ์ ๋ชจ๋ ํฌํจํด ์ถ๋ ฅํ ๊ฒ์ด ๋ณด์ ๋๋ค. ๋ ์์๋๋ก ๋ค์ด ์๋ ๊ฒ๋ ํน์ง์ ๋๋ค. ์ธ๋ฑ์ค 0๋ฒ, 1๋ฒ, 2๋ฒ์ผ๋ก ์์๊ฐ ๋์ด๋์ด ์๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ ์ง๋ง ๋ฐฐ์ด ๋ฉ์๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ฐฐ์ด๊ณผ ๋น์ทํ์ง๋ง ๋ฐฐ์ด์ ์๋๋ผ๋ ๊ฑฐ์ฃ . ์ด๊ฑธ sum ๋ฉ์๋๋ก ๋ง๋ค๊ณ ์ถ์ผ๋ฉด ๋ชจ๋ ์ธ์๋ฅผ ๋ชจ์ผ๋ฉด ๋ฉ๋๋ค. sum์ ์ซ์๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ฃ์ ์๋ ์์ผ๋๊น์.
์ด๋ ๊ฒ ์
๋ ฅํ๋ ค๋ฉด ๋ชจ๋ ์ธ์๋ฅผ ๋ฐ๋ณตํ๊ณ ํ๋ฐ ๋ชจ์์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ฐฐ์ด ๋ฉ์๋์ธ reduce๋ฅผ ์ฌ์ฉํ ์๋ ์๊ณ ์. ํจ์์ arguments.reduce
๋ฅผ ๋ฐํํ๋๋ก ์ ์ํด ๋ณด๊ฒ ์ต๋๋ค. total, el์ ์
๋ ฅํ๊ณ ๋ฐํํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๊ฐ ์๊ฒผ์ต๋๋ค. ์ธ์ ๊ฐ์ฒด๊ฐ ๋ฐฐ์ด์ด ์๋์ด์ ์๋ํ์ง ์์๋ค์. ์ฆ ์ด๋๋ก๋ reduce ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋์์ต๋๋ค. ์ฝ์์์ arguments.reduce
๋ ํจ์๊ฐ ์๋๋ผ๊ณ ํ๋ค์.
๋ง์ฝ ์ธ์ ๊ฐ์ฒด๊ฐ ๋ฐฐ์ด์ด์์ผ๋ฉด ์๋ํ๊ฒ ์ฃ . ๊ทธ๋ฐ๋ฐ ์ด๋ ๋ฐฐ์ด์ด ์๋๋๋ค. ๋ฐฐ์ด๊ณผ ๋น์ทํ์ง๋ง ๋ฐฐ์ด์ด๋ผ๊ณ ํ๊ธฐ์ ๋ถ์กฑํ์ฃ .
๋๋จธ์ง ๋งค๊ฐ ๋ณ์ ํ์ฉํ๊ธฐ
๊ทธ๋์ ๋๋จธ์ง ์ฐ์ฐ์๊ฐ ํ์ํฉ๋๋ค. ๋๋จธ์ง ์ฐ์ฐ์๋ ์ ์ธ ๊ฐ(...
)๋ก ๋ง๋ค๋ฉฐ, ๋งค๊ฐ ๋ณ์ ๋ชฉ๋ก์ ๋ค์ด๊ฐ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋จ์ ์๋ ์ธ์๋ฅผ ๋ชจ๋ ๋ชจ์ ๋ฐฐ์ด๋ก ๋ํ๋ด์ฃ .
๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ๋ด ์๋ค. ์๋ก sum ํจ์๋ฅผ ์ ์ธํ๊ฒ ์ต๋๋ค.
์ด๋ฒ์๋ ๋งค๊ฐ ๋ณ์๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. nums๋ผ๊ณ ์ ๋ ฅํ์ต๋๋ค. ์ด๋ ๊ฒ nums๋ฅผ ๊ทธ๋๋ก ๋๋ฉด ๋งค๊ฐ ๋ณ์๋ ํ ๊ฐ๋ก ํ์ ๋ฉ๋๋ค. ์ด ๋ ๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ๋๋จธ์ง ๋งค๊ฐ ๋ณ์๋ฅผ ๋ชจ์ ์ฃผ๊ฒ ์ต๋๋ค. ๊ฐ์ด ๋ชจ๋ ํต๊ณผํ๋ฉฐ nums์ ์ ์ฅ๋ ๊ฒ๋๋ค. console.log(nums) ๊ตฌ๋ฌธ์ ํจ์์ ์ ์ฉํด ์ด๋ค ๊ฐ์ด nums์ ๋ํ๋๋์ง ๋ณผ๊น์?
์ด์ sum ํจ์๋ฅผ ํธ์ถํ๊ฒ ์ต๋๋ค. ๋ฐฐ์ด์ด ๋ํ๋ฌ์ต๋๋ค.
์ฌ๊ธฐ์๋ ๊ฐ์ ํ๋๋ง ๋ฃ์ด๋ ๋๊ณ ๋ฐฑ ๊ฐ ํน์ ๊ทธ ์ด์์ ๋ฃ์ ์ ์์ต๋๋ค. ํ ๊ฐ์ง ์ซ์๋ง ๋ง์ด ๋ฃ์ ์๋ ์์ฃ .
์ด๋ ๊ฒ nums ๋ฐฐ์ด์ด ์๊ฒผ์ต๋๋ค. ๋ฐฐ์ด์ด ๋ง๋ค์ด์ง๋ฉด ์์ฃผ ํธํฉ๋๋ค. ์๊น ํ์ฉํ์ง ๋ชปํ reduce ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๋ณผ๊น์? arguments๋ผ๋ ์ด๋ฆ์ ์์์ ์ง์ ํ ๋งค๊ฐ ๋ณ์์ ๋ง๊ฒ nums๋ผ๊ณ ํ๊ฒ ์ต๋๋ค. ์ด nums๋ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ด๊ณ ์ ๊ฐ ๋ง์๋๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
// COLLECT THE "REST" IN NUMS:
function sum(...nums) {
return nums.reduce((total, el) => total + el);
}
๊ฒฐ๊ณผ๋ฅผ ๋ณผ๊น์? ์ ๋ ฅํ ์ซ์๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ด ๋์ต๋๋ค.
์ด๋ ๊ฒ ๋๋จธ์ง ๋งค๊ฐ๋ณ์๋ ๋๋จธ์ง ๊ฐ์ ๋ชจ๋ ๋ชจ์ ์ค๋๋ค. ์ฒ์ ํธ์ถํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์๋ฏธ์ ๋๋ค.
๋๋จธ์ง ๋งค๊ฐ ๋ณ์์ ๋ ๋ค๋ฅธ ํ์ฉ๋ฒ
์์๋ฅผ ํ๋๋ง ๋ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. raceResults
๋ ํจ์๋ฅผ ์ ์ธํด ๋ณผ๊ฒ์. ๋งค๊ฐ ๋ณ์๋ก๋ ๊ธ๋ฉ๋ฌ(gold
)๊ณผ ์๋ฉ๋ฌ(silver
)์ด ์๊ณ , ๋ง์ง๋ง์๋ ๊ฐ๋จํ๊ฒ ๋ชจ๋ ์ฐธ๊ฐ์(everyoneElse
)๋ผ๊ณ ์
๋ ฅํ๊ฒ ์ต๋๋ค. ๊ทธ ์์๋ ๋๋จธ์ง ๋งค๊ฐ ๋ณ์(...
)๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด ๋งค๊ฐ ๋ณ์์ ๋ชจ๋ ๋ชจ์ผ๋ ๊ฑฐ์ฃ . ๊ทธ๋์ ์ ํจ์์ ...nums
์ฒ๋ผ ๋ฐฐ์ด์ด ๋ฉ๋๋ค.
์ถ๋ ฅํ ๋ด์ฉ๋ ์ ์๊ฒ์. console.log
์๋ ๊ณจ๋ ๋ฉ๋ฌ ์์์์๊ฒ โ๊ธ๋ฉ๋ฌ์ ์์ฌํ๋คโ๋ผ๊ณ ์
๋ ฅํฉ๋๋ค. ์๋ฉ๋ฌ ์์์์๋ โ์๋ฉ๋ฌ์ ์์ฌํ๋คโ๋ผ๊ณ , ๋๋จธ์ง ๋ชจ๋ ์ฐธ๊ฐ์์๊ฒ๋ ๊ฐ์ฌ ์ธ์ฌ๋ก โ๋ชจ๋ ์ฐธ๊ฐ์์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋คโ๋ฅผ ์
๋ ฅํฉ๋๋ค.
function raceResults(gold, silver, ...everyoneElse) {
console.log(`GOLD MEDAL GOES TO: ${gold}`);
console.log(`SILVER MEDAL GOES TO: ${silver}`);
console.log(`AND THANKS TO EVERYONE ELSE: ${everyoneElse}`);
}
ํจ์๋ก ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ํธ์ถํ๊ฒ ์ต๋๋ค.
ํ๋ฏธ(Tammy)๊ฐ ๊ธ๋ฉ๋ฌ์, ํ ๋(Todd)๊ฐ ์๋ฉ๋ฌ์ ๋ฐ์์ผ ํฉ๋๋ค. ๊ทธ ๋ค์๋ ๋ค๋ฅธ ์ฐธ๊ฐ์๋ค์ ์ด๋ฆ์ ๋์ดํฉ๋๋ค. ํฐ๋(Tina), ํธ๋ ๋ฒ(Travor), ํธ๋๋น์ค(Travis). ์ด๋ ๊ฒ T๊ฐ ๋ค์ด๊ฐ๋ ์ด๋ฆ์ ์ผ์ต๋๋ค. ๋ชจ๋ ์ฐธ๊ฐ์๋ผ๊ณ ํ๋ฉด ์ ๋ฉ๋๋ค. ์ธ์ ๊ฐ์ฒด์ ๋ชฉ๋ก์ด๋๊น์.
๊ฒฐ๊ณผ๋ ์ด๋ ์ต๋๋ค. ํ๋ฏธ์๊ฒ ๊ธ๋ฉ๋ฌ์ ์์ฌํ๊ณ ํ ๋์๊ฒ ์๋ฉ๋ฌ์ ์์ฌํ๊ณ ํฐ๋, ํธ๋ ๋ฒ, ํธ๋๋น์ค๋ ๊ฐ์ฌ ์ธ์ฌ๋ฅผ ๋ฐ์ฃ . ๋งจ ์ฒ์ ๋งค๊ฐ๋ณ์ ๋ ๊ฐ๋ฅผ ํธ์ถํ๊ณ ๋๋จธ์ง๋ ๋ชจ๋ ์ฐธ๊ฐ์๋ก ๋ชจ์์ต๋๋ค.
์, ์ง๊ธ๊น์ง ๋ด์ฉ์ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. ๋๋จธ์ง ๋งค๊ฐ ๋ณ์๋ ๊ต์ฅํ ์ ์ฉํฉ๋๋ค. ์๋ ์ธ์ ๊ฐ์ฒด๋ ๋ชจ์ ์ ์์ต๋๋ค. ์ธ์ ์ ์ฒด๋ฅผ ๋ด๊ธฐ ๋๋ฌธ์ด์ฃ .
ํ๋ ๋, ์ธ์๋ ํ์ดํ ํจ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด๋๋ ๋๋จธ์ง ๋งค๊ฐ ๋ณ์๊ฐ ํ์ํ์ฃ . ์ ์ธ ๊ฐ(...
)๋ฅผ ๋ถ์ฌ์ผ ํ๊ณ ํจ์ ์๋ ์ ๊ฐ์ ๊ตฌ๋ถํด์ผ ํฉ๋๋ค. ๋งค๊ฐ ๋ณ์๋ค์ ๋ฐฐ์ด๋ก ํ๋ฐ ๋ชจ์ผ๋ ๊ฒ๋๋ค. ๊ทธ๊ฒ ๋๋จธ์ง ๋งค๊ฐ ๋ณ์์
๋๋ค.
๋ง์น๋ฉฐ
์ด๋ฒ ๊ฐ์์์๋ JavaScript ์ฝ๋ ์์ฑ์ ์์ฃผ ํธํ๊ฒ ๋ง๋ค์ด์ฃผ๋ 2๊ฐ์ง ๋งค๊ฐ ๋ณ์ ํ์ฉ๋ฒ์ ๋ค๋ค๋ดค์ต๋๋ค.
์ฐ์ ๋ฑํธ๋ฅผ ํ์ฉํด ๊ธฐ๋ณธ ๋งค๊ฐ ๋ณ์๋ฅผ ์ฝ๊ฒ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด ๋ณด์์ต๋๋ค. ํจ์ ์๋ ๊ธธ๊ฒ ๋ด์ฉ์ ์ ๊ฐํ๋ ๊ธฐ์กด ๋ฐฉ์์ ํจ์จ์ฑ์ด ๋จ์ด์ง๋๋ค. ๊ฐ๋จํ๊ฒ ๋ฑํธ๋ก ๋งค๊ฐ ๋ณ์๋ฅผ ์ง์ ํ๋ฉด ์ข์ต๋๋ค. ์์๋ง ์ ๊ณ ๋ คํ๋ฉด์.
๋ค์์ ๋๋จธ์ง ๋งค๊ฐ ๋ณ์์
๋๋ค. ํจ์๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๋ฐ๋ ์ธ์ ๊ฐ์ฒด๋ ๋ฐฐ์ด ๊ฐ์ง๋ง, ์ฌ์ค ๋ฐฐ์ด์ด ์๋๋๋ค. ๋ฐฐ์ด ๋ฉ์๋๋ฅผ ํธํ๊ฒ ์ฐ๋ ค๋ฉด ์ ์ธ ๊ฐ(...
), ๋๋จธ์ง ์ฐ์ฐ์๋ฅผ ๊ธฐ์ตํ์ธ์.