๐ฅ Why : ํจ์๋ฅผ ์ ์ฐ๋?
๐ฅ Return : ๊ฐ๋ง ์ฐ๋ ํจ์์ ๊ฐ์ ๋ด๋ ํจ์
๐ฅ Parameter : ๊น๋ฐฅ ๋จธ์ ๊ณผ ์์ฌ๋ฃ
๐ฅ Copy Function : ๊น๋ฐฅ ๋จธ์ ์ ๋ณต์ฌํ๋ ๋ฒ๊ณผ ๊น๋ฐฅ์ ๋ณต์ฌํ๋ ๋ฒ
๐ฅ Arrow Function
ํจ์๋ ๋ณ์์ฒ๋ผ ์์์ ๋๋ค. ํ์ง๋ง ํจ์๋ ์ด๋ ํ ์๋์ด๋ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ด์ ์ ์์ต๋๋ค. ๋ฌผ๋ก ํจ์๋ ๋ณ์์ ๋ด์ ์ ์์ง๋ง, ๋จ์ง ์ด๋ค ๋ด์ฉ์ ๋ด๊ธฐ๋ง ํ๋ ๋ณ์์๋ ๋ค๋ฅด๊ฒ ํจ์๋ ๊ทธ ์์ฒด๋ก ์ด๋ ํ ๊ธฐ๋ฅ("๊ธฐ๋ฅ์ ๋ชปํ๋ ๊ฒ๊ณผ ๊ธฐ๋ฅ์ ์ํ๋ ๊ฒ์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.")์ ๊ฐ๊ณ ์๋ ์์์ ๋๋ค. ์ผ์ข ์ ์์ ๋จธ์ ์ด์ฃ ! ์น๊ตฌ์๊ฒ ํ์ด์ ํธ์ง๋ฅผ ๋ณด๋ด์ผํ๋ค๊ณ ์๊ฐํด ๋ด ์๋ค. ๋จ, ๋ถ์ฌ๋ฃ๊ธฐ๋ ์๋๊ณ , ํธ์ง์ ์์๊ณผ ๋์ ์น๊ตฌ์ ์ด๋ฆ์ ์ ์ด์ค์ผ ํฉ๋๋ค. ํธ์ง ๋ด์ฉ์ ์์ฑํ์ฌ console.log๋ก ์ฐ์ด๋ณด๊ฒ ์ต๋๋ค.
// ์ฒซ๋ฒ์งธ ํธ์ง : ์ฒ ์ console.log('์ฒ ์์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ์ฒ ์์๊ฒ') // ๋๋ฒ์งธ ํธ์ง : ์ํฌ console.log('์ํฌ์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ์ํฌ์๊ฒ') // ์ธ๋ฒ์งธ ํธ์ง : ์ค์ฐ console.log('์ค์ฐ์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ์ค์ฐ์๊ฒ') // ๋ค๋ฒ์งธ ํธ์ง : ํํฌ console.log('ํํฌ์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ํํฌ์๊ฒ') // ๋ค์ฏ๋ฒ์งธ ํธ์ง : ์ ๋ฆฌ console.log('์ ๋ฆฌ์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ์ ๋ฆฌ์๊ฒ') // ์ฌ์ฏ๋ฒ์งธ ํธ์ง : ์ฐฝํฌ console.log('์ฐฝํฌ์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ์ฐฝํฌ์๊ฒ') // ์ผ๊ณฑ๋ฒ์งธ ํธ์ง : ํ์ console.log('ํ์์ผ,,์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ํ์์๊ฒ')
7๊ฐ์ ํธ์ง๋ฅผ ๋ณด๋์ ๋ฟ์ธ๋ฐ,, ์์ฒญ ๊ธด ์ฝ๋๊ฐ ์๊ฒจ๋ฒ๋ ธ์ต๋๋ค. ์น๊ตฌ์ ์ด๋ฆ์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ ๋ณ์๋ก ๋ฐ๊พผ๋คํด๋ ๊ทธ ์๋ฆฌ๋ ๋ณ์๋ช ์ด ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์ด๋๋ฐ ๋์์ด ๋์ง ์๊ฒ ์ฃ . ์ด์ฒ๋ผ ์ค๋ณต๋๋๊ฒ ๋ง์ ๋๋ ์ฒซ๋ฒ์งธ ํจ์๋ฅผ ๋ ์ฌ๋ ค์ผํฉ๋๋ค. ํจ์๋ ์ค๋ณต๋๋ ๋ถ๋ถ์ ํจ๊ณผ์ ์ผ๋ก ์ค์ฌ์ฃผ๊ณ , ์ด๋์๋ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. 'sendToLetter'๋ผ๋ ์ด๋ฆ์ผ๋ก ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค ์ ์๋๋ก ํจ์๋ฅผ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
function sendToLetter(name){ let text = name+'์ผ,, ์ด ํธ์ง๋ ์๊ตญ์์ ์ต์ด๋ก ์์๋์ด ์ผ๋ ์ ํ ๋ฐํด ๋๋ฉด์ ๋ฐ๋ ์ฌ๋์๊ฒ ํ์ด์ ์ฃผ์์ด. ์ง๊ธ์ ๋์๊ฒ๋ก ๋ณด๋ด์ง ์ด ํธ์ง๋ 4์ผ ์์ ๋์ ๊ณ์ ๋ ๋์ผ ํด. ์ด ํธ์ง๋ฅผ ํฌํจํด์ 7ํต์ ํ์ด์ด ํ์ํ ์ฌ๋์๊ฒ ๋ณด๋ด ์ค์ผํด. ๋ณต์ฌ๋ฅผ ํ๋ฉด ์ ๋ ์๋. ํน ๋ฏธ์ ์ด๋ผ ํ์ค์ง ๋ชจ๋ฅด์ง๋ง ์ ๋ง ์ฌ์ค์ด์ผ. ์ด ํธ์ง๋ฅผ ๋ณด๋ด๋ฉด 7๋ ์ ํ์ด์ด ์์ ๊ฒ์ด๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด 3๋ ์ ๋ถํ์ด ์์ ๊ฑฐ์ผ. ๊ทธ๋ฆฌ๊ณ ์ด ํธ์ง๋ฅผ ๋ฒ๋ฆฌ๊ฑฐ๋ ๋์๋ฅผ ํด์๋ ํฐ์ผ๋. 7๋ ์ ํ์ด์ ๋น๋ฉด์.. ' + name + '์๊ฒ'; console.log(text) }; sendToLetter('์ฒ ์') sendToLetter('์ํฌ') sendToLetter('์ค์ฐ') sendToLetter('ํํฌ') sendToLetter('์ ๋ฆฌ') sendToLetter('์ฐฝํฌ') sendToLetter('ํ์')
โ๏ธ ์ฆ, ํจ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ์ฒซ๋ฒ์งธ ์ฌ์ฌ์ฉ์ฑ์
๋๋ค. ์ ์ํ ํจ์๋ฅผ ํธ์ถ๋ง ํจ์ผ๋ก์จ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
โ๏ธ ๋๋ฒ์งธ๋ ๊ฐ๋
์ฑ์
๋๋ค. name๊ฐ์ ๋ฐ์ ๋งจ ์ ๋ถ๋ถ๊ณผ ๋งจ ๋ท๋ถ๋ถ์ ํฉ์ณ์ฃผ๋ ๊ตฌ์กฐ๋ฅผ ํ ๋์ ํ์
ํ ์ ์์ต๋๋ค. ๋ํ 'sendToLetter'๋ผ๋ ํจ์๋ช
์ ํตํด ํจ์์ ๋๋ต์ ์ธ ๊ธฐ๋ฅ์ ๋ํด ์์์ฑ๊ธฐ ์ฝ์ต๋๋ค.
โ๏ธ ์ธ๋ฒ์งธ๋ ๋ชจ๋ํ์
๋๋ค. ์ฝ๋์ ๊ท๋ชจ๊ฐ ์ปค์ง ์๋ก ์ง๊ธ ์๋ํ๋ ์ฝ๋๊ฐ ์ด๋์๋ถํฐ ์ด๋๊น์ง ์๋ํ๊ณ , ์ํฅ์ ์ฃผ๋์ง ํ์
ํ๊ธฐ ์ฝ์ง ์์ต๋๋ค. ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ํจ์์ ๊ธฐ๋ฅ๋ณ๋ก ๋
๋ฆฝ๋ ์์ญ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์๊ณ ์ ์ง๋ณด์๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ ์ ์ด๋์ ๋ฐ์ํ๋์ง ํ์
ํ๊ธฐ ์ฉ์ดํฉ๋๋ค.
ํจ์๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ํจ์๋ช , ์ธ์, ์ฒ๋ฆฌ ์ ์ฐจ๋ก ๋๋ฉ๋๋ค. ๋๋ ํจ์ ์ฌ์ฉ๊ณผ ๊ด๋ จํด์ ํจ์ ์ ์ธ, ํจ์ ํธ์ถ๋ก ๋๋๊ธฐ๋ ํฉ๋๋ค.
ํจ์์ ์ธ๋ฌธ์ ์๋์ ๊ฐ์ด ์๊ฒผ์ต๋๋ค. ์ง๊ธ๊น์ง ์ผ๋ฐ์ ์ผ๋ก ์ ์ธํ๋ ํจ์๊ฐ ํจ์์ ์ธ๋ฌธ ๋ฐฉ์์ ๋ฐ๋ฅธ ๊ฒ์ ๋๋ค. ํจ์ ์ ์ธ๋ฌธ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ง๋ง, ํจ์๊ฐ ์ ์ธ๋์ง ์ ์๋ ํธ์ถํ ์ ์๋ค๋ ํน์ด์ ์ด ์์ต๋๋ค. ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด, ์ฝ๋๋ ์์์๋ถํฐ ์๋๋ก ์ฝํ์ ธ ๋ด๋ ค๊ฐ๊ธฐ ๋๋ฌธ์ ์์ง ์ ์ธ๋์ง ์์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํด์ผ ํ๋๋ฐ ๊ทธ๋ ์ง ์๊ณ ์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. ์๋ง.. ํจ์๋ฅผ ๋ณ๋๋ก ๋ณด๊ดํด์ ์ ์ธ ์์น์ ๊ด๋ จ์์ด ํธ์ถ๋๋ฉด ๋ฐ๋ก ์๋ํ ์ ์๊ฒ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
sayHello() function sayHello(){ console.log("์๋ ํ์ธ์! ๋ง๋์ ๋ฐ๊ฐ์ต๋๋ค") } sayHello()
ํจ์ํํ์์ ์๋์ ๊ฐ์ด ์๊ฒผ์ต๋๋ค. ํจ์๋ช ์ ๊บผ๋ด์ ๋ณ์์ ๋ด๊ณ , ๋ณ์๋ช ์ ํธ์ถํ์ฌ ํจ์๋ฅผ ์๋์ํค๋ ์ ์ธ ๋ฐฉ์์ ๋๋ค. ๋จ, ํจ์ํํ์์ ์ฌ์ฉํ์ ๋๋ ์ ์ธ ๋ค ํจ์๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด 'ReferenceError'๋ฅผ ๋ง๋๊ฒ ๋ฉ๋๋ค.
// sayHello() ReferenceError : Cannot access 'sayHello' before initialization let sayHello = function(name){ console.log("์๋ ํ์ธ์! ๋ง๋์ ๋ฐ๊ฐ์ต๋๋ค") } sayHello()
ํจ์์ return์ ๋งค์ฐ ์ค์ํฉ๋๋ค. return์ ๊ธฐ๋ฅ์ ์์๋ด
์๋ค. return์ 2๊ฐ์ง ๋ํ์ ์ธ ํต์ฌ ๊ธฐ๋ฅ์ ๊ฐ๊ณ ์์ต๋๋ค. ๊ทธ ์ค ํ๋๋ ๊ฒฐ๊ณผ๊ฐ ์ ๋ฌ์ด๋ผ๋ ๊ธฐ๋ฅ์
๋๋ค.
๊ฒฐ๊ณผ๊ฐ์ ์ ๋ฌํ๋ค๋ ๋ง์ ์ฒ์ ์ดํดํ๊ธฐ ์ด๋ ต์ต๋๋ค. ํจ์ ๋ด์์ console.log()๋ก ๊ฐ์ ์ถ๋ ฅํด๋ ๋ง์น ๊ทธ ํจ์๊ฐ ๊ฐ์ ๊ฐ๊ณ ์๋ค๊ณ ์ฐฉ๊ฐํ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์
๋๋ค. 'moneyCopyMechine' ํจ์๋ ๋์ 10๋ฐฐ๋ก ๋ณต์ฌํ๋ ๋จธ์ ์
๋๋ค. ์ธ์๋ก ๋ฃ์ด์ค ๊ธ์ก์ 10๋ฐฐ๋ก ๋ถ๋ ค์ฃผ์ฃ . ํจ์๋ฅผ ์คํ์ํค๋ฉด ์ฝ์์ ๋ง์์ด 10๋ฐฐ๊ฐ๋์ด 100000์ด ์ถ๋ ฅ๋ฉ๋๋ค. ํ์ง๋ง ์ด ๊ฐ์ ํจ์ ๋ด์์ console.log๊ฐ ์๋ํ ๊ฒฐ๊ณผ์
๋๋ค. ํธ์ถ๋ ํจ์์ ๊ฐ์ ํ์ธํด๋ณด๊ธฐ ์ํด myMoney์ ๋ด์ ๋งจ ์๋์์ ์ถ๋ ฅํ์๋๋ undefined๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
console.log๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ค ๊ฐ์ ์ ๋ฐ์์๋์ง, ์๋๋๋ก ์ฒ๋ฆฌ๋๊ณ ์๋์ง ์ค๊ฐ์ ์ ๊ฒํ๊ธฐ ์ํด ์ ๋ง ์ค์ํ ๋๊ตฌ์
๋๋ค. ํ์ง๋ง ์ถ๋ ฅ๋์๋ค๊ณ ํด์ ๊ทธ ํจ์๊ฐ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๊ณ ์คํดํด์๋ ์๋ฉ๋๋ค. ์๋ 'moneyCopyMechine'๋ ๋ง์น ๊นกํตํจ์์ ๊ฐ์ต๋๋ค. ์ฒ๋ฆฌํ๋ ๋ก์ง์ ์กด์ฌํ์ง๋ง ๊ฒฐ๊ตญ ๋จ๋๊ฒ ์์ต๋๋ค. ์๋ฌด ๊ฐ๋ ๊ฐ๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ฌ์ฐ์ ๋ ๋ฆฐ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
function moneyCopyMechine(money){ money = money * 10 console.log(money) // ๐ ์ฝ์์ 100000์ ์ฌ๊ธฐ์ ์ถ๋ ฅ๋ ๊ฒฐ๊ณผ์ผ ๋ฟ์ด์์:) } let myMoney = moneyCopyMechine(10000) console.log(myMoney) // ๐ undefined
return์ ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ ์ ๋ฌํฉ๋๋ค. ์ด๋์ ์ ๋ฌํ ๊น์? ํธ์ถํ ํจ์๊ฐ ๊นกํต์ด ์๋, ๊ฒฐ๊ณผ๋ฌผ์ ๋ด๊ณ ์๋๋ก ํธ์ถํ ๊ณณ์ ๊ฐ์ ์ ๋ฌ์ํต๋๋ค. console.log๊ฐ ์๋ return์ผ๋ก money๋ฅผ ์ ๋ฌํ๋๋ ํธ์ถํ ํจ์๋ฅผ ๋ด์ 'myMoney'์์ 100000์ ๊ฐ๊ณ ์๋ ๊ฒ์ ์๋์ฒ๋ผ ํ์ธํ ์ ์์ต๋๋ค.
function moneyCopyMechine(money){ money = money * 10 return money } let myMoney = moneyCopyMechine(10000) console.log(myMoney) // ๐ 100000
return์ ๋ง๋๋ฉด ํจ์๋ฅผ ์ข
๋ฃ๋ฉ๋๋ค. ์ด๋ฅผ ์ฆ๋ช
ํ๊ธฐ ์ํด ์ฒซ๋ฒ์งธ return ๋ค์ ์ถ๋ ฅ๋ฌธ 2๊ฐ์ ๊ทธ ์ฌ์ด์ return์ ๋๊ณ ์คํํด๋ณด๊ฒ ์ต๋๋ค. ๊ฒฐ๊ณผ๋ 100000์ด ์ถ๋ ฅ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ ํจ์ ๋ด์์ return์ ๋ง๋๋ฉด ํจ์์ ์๋์ ๊ทธ ์์น์์ ๋ฉ์ถ๊ณ , ๊ฐ์ ๋ฐ์ ๋ฐํํฉ๋๋ค. ์ฒซ๋ฒ์งธ๋ก ๋ง๋๋ return์์ ์ข
๋ฃ๋๊ธฐ ์ดํ์ ์ฝ๋๋ ์๋ฏธ๊ฐ ์์ต๋๋ค.
function moneyCopyMechine(money){ money = money * 10 return money console.log('1. ์ด๊ณณ์ด ์ถ๋ ฅ๋๋ค๋ฉด,, ์ฒซ๋ฒ์งธ return ํ ํจ์๊ฐ ์๋ํ๊ฑฐ์์.') // ๐ ์๋๋์ง ์์ต๋๋ค. return money / 2 // ๐ ์๋๋์ง ์์ต๋๋ค. console.log('2. ์ด๊ณณ์ด ์ถ๋ ฅ๋๋ค๋ฉด,, ๋๋ฒ์งธ return ํ์๋ ํจ์๊ฐ ์๋ํ๊ฑฐ์์.') // ๐ ์๋๋์ง ์์ต๋๋ค. } let myMoney = moneyCopyMechine(10000) console.log(myMoney) // ๐ 100000
์์์ ์ ๋ฆฌํ๊ฒ ์ฒ๋ผ ์ธ์(parameter)๋ ํจ์๋ก ์ ๋ฌ๋๋ ๊ฐ์ ๋๋ค. ์ ๋ฌํ ๊ฐ์ ํจ์๋ฅผ ํธ์ถํ ๋, ํจ์์ ์ ๊ตฌ์ธ () ์์ ๋ฐฐ์น์์ผ, ํจ์์ ๋ด์์ ์๋ํ ์ ์๋๋ก ํฉ๋๋ค. ์๋๋ ๊น๋ฐฅ์ ๋ง๋๋ ๋จธ์ ์ ๋๋ค. ์ฐธ์น๋ฅผ ๋ฃ์ผ๋ฉด ์ฐธ์น๊น๋ฐฅ, ์น์ฆ๋ฅผ ๋ฃ์ผ๋ฉด ์น์ฆ๊น๋ฐฅ, ์คํธ์ ๋ฃ์ผ๋ฉด ์คํธ ๊น๋ฐฅ์ ๋๋ค.
function makeKimbab(ingredient){ console.log('๊น๋ฐฅ ๊น์ ํ๋ ๊บผ๋ ๋๋ค.') console.log('๊ณ ์ฌ๊ณ ์ฌํ ๋ฐฅ์ ๊น ์์ ์ฌ๋ ค ํ ๋๋ค.') console.log(ingredient+',', '๋จ๋ฌด์ง,', '๋ง์ด,','์๊ธ์น๋ฅผ ์ฌ๋ฆฝ๋๋ค.') console.log('๊น๋ฐฅ์ ๊ท ์ผํ๊ฒ ์ฐ์ด ํฌ์ฅํฉ๋๋ค.') let kimbab = ingredient + 'Kimbap'; return kimbab } // order1 let order1 = makeKimbab('Tuna') console.log(order1+'์ด ์์ฑ๋์์ต๋๋ค.') // TunaKimbap์ด ์์ฑ๋์์ต๋๋ค. // order2 let order2 = makeKimbab('Cheese') console.log(order2+'์ด ์์ฑ๋์์ต๋๋ค.') // CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order3 let order3 = makeKimbab('Spam') console.log(order3+'์ด ์์ฑ๋์์ต๋๋ค.') // SpamKimbap์ด ์์ฑ๋์์ต๋๋ค.
๋๋ก๋ parameter๋ฅผ ์ฌ๋ฌ๊ฐ ๋ฐ์ ํจ์ ๊ธฐ๋ฅ ๋ด์์ ์ํธ์์ฉํ ์ ์๋๋ก ์ฒ๋ฆฌํ ํ์๊ฐ ์์ต๋๋ค. ์์์ ์ฒ๋ผ 3๊ฐ์ ์ฃผ๋ฌธ์ด์๋๋ผ ์ฃผ๋ฌธ์ด 5๊ฐ๊ฐ ๋ค์ด์๋๋ฐ, ์ค๋ณต๋๋ ๊น๋ฐฅ์ด ์์ผ๋ฉด ๋๊ตฌ์ ๊น๋ฐฅ์ธ์ง ํ์
ํ๊ธฐ ์ด๋ ต๊ฒ ์ฃ . ์ด๋ด ๋ parameter๋ฅผ ํ๊ฐ ๋ ๋ฐ์ ๋๊ตฐ์ง ํ์ธํ ์ ์์ต๋๋ค.
์ด์ฒ๋ผ parameter๋ ํ์์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ ์ฝ๋๋ฅผ ํ์ธํด๋ณผ๊ป์:)
function makeKimbab(who, ingredient){ console.log('๊น๋ฐฅ ๊น์ ํ๋ ๊บผ๋ ๋๋ค.') console.log('๊ณ ์ฌ๊ณ ์ฌํ ๋ฐฅ์ ๊น ์์ ์ฌ๋ ค ํ ๋๋ค.') console.log(ingredient+',', '๋จ๋ฌด์ง,', '๋ง์ด,','์๊ธ์น๋ฅผ ์ฌ๋ฆฝ๋๋ค.') console.log('๊น๋ฐฅ์ ๊ท ์ผํ๊ฒ ์ฐ์ด ํฌ์ฅํฉ๋๋ค.') let kimbab = who + '๋์ด ์ฃผ๋ฌธํ ' + ingredient + 'Kimbap์ด ์์ฑ๋์์ต๋๋ค.'; return kimbab } // order1 let order1 = makeKimbab('์ฌ์', 'Tuna') console.log(order1) // ์ฌ์๋์ด ์ฃผ๋ฌธํ TunaKimbap์ด ์์ฑ๋์์ต๋๋ค. // order2 let order2 = makeKimbab('ํ์ง', 'Cheese') console.log(order2) // ํ์ง๋์ด ์ฃผ๋ฌธํ CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order3 let order3 = makeKimbab('๋ณด๋', 'Cheese') console.log(order3) // ๋ณด๋๋์ด ์ฃผ๋ฌธํ CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order4 let order4 = makeKimbab('๋ฏผ์ค', 'Spam') console.log(order4) // ๋ฏผ์ค๋์ด ์ฃผ๋ฌธํ SpamKimbap์ด ์์ฑ๋์์ต๋๋ค.
์ ์ธํ ํจ์์ parameter๊ฐ ์๋๋ฐ ๋ถ๊ตฌํ๊ณ , ํจ์ ํธ์ถ ๋ถ๋ถ์์ parameter๋ฅผ ์ ๋ฌํ์ง ์๋๋ค๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ง์ผ ํจ์์ parameter๊ฐ ์ ๋ฌ๋์ง ์๋๋ค๋ฉด ๋ฏธ๋ฆฌ ์ ํด๋ default๊ฐ์ด parameter๋ก ์๋๋ ์ ์๊ฒํ๋ฉด ์ด๋จ๊น์? parameter์ default๋ก 'basic'์ ์ง์ ํด๋๊ฒ ์ต๋๋ค.
function makeKimbab(who, ingredient='Basic'){ console.log('๊น๋ฐฅ ๊น์ ํ๋ ๊บผ๋ ๋๋ค.') console.log('๊ณ ์ฌ๊ณ ์ฌํ ๋ฐฅ์ ๊น ์์ ์ฌ๋ ค ํ ๋๋ค.') console.log(ingredient+',', '๋จ๋ฌด์ง,', '๋ง์ด,','์๊ธ์น๋ฅผ ์ฌ๋ฆฝ๋๋ค.') console.log('๊น๋ฐฅ์ ๊ท ์ผํ๊ฒ ์ฐ์ด ํฌ์ฅํฉ๋๋ค.') let kimbab = who + '๋์ด ์ฃผ๋ฌธํ ' + ingredient + 'Kimbap์ด ์์ฑ๋์์ต๋๋ค.'; return kimbab } // order1 let order1 = makeKimbab('์ฌ์') console.log(order1) // ์ฌ์๋์ด ์ฃผ๋ฌธํ BasicKimbap์ด ์์ฑ๋์์ต๋๋ค. // order2 let order2 = makeKimbab('ํ์ง', 'Tuna') console.log(order2) // ํ์ง๋์ด ์ฃผ๋ฌธํ CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order3 let order3 = makeKimbab('๋ณด๋', 'Cheese') console.log(order3) // ๋ณด๋๋์ด ์ฃผ๋ฌธํ CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order4 let order4 = makeKimbab('๋ฏผ์ค') console.log(order4) // ๋ฏผ์ค๋์ด ์ฃผ๋ฌธํ BasicKimbap์ด ์์ฑ๋์์ต๋๋ค.
parameter๋ก 2๊ฐ๊ฐ ์ ๋ฌ๋ ์ ์๊ณ , 3๊ฐ๊ฐ ์ ๋ฌ๋ ์๋ ์๊ณ , 10๊ฐ๊ฐ ์ ๋ฌ๋ ์๋ ์๊ฒ ํ๊ณ ์ถ์ด์. ๋ง์น ์ํ๋ ์์ฌ๋ฃ๋ฅผ ๋ค ๋ฃ์ด ๋๋ง์ ๊น๋ฐฅ์ ๋ง๋๋๊ฒ ์ฒ๋ผ์! ๊ทธ๋ด๋ ...์ parameter์ ๋ถ์ ๋๋ค. ๋ง์น python์์ *args๋ก ์ฌ๋ฌ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ค ๋ฐ์ ์ ์๋ ๊ฒ ์ฒ๋ผ ๋ง์ด์ฃ .
function makeKimbab(who, ...ingredient){ console.log('๊น๋ฐฅ ๊น์ ํ๋ ๊บผ๋ ๋๋ค.') console.log('๊ณ ์ฌ๊ณ ์ฌํ ๋ฐฅ์ ๊น ์์ ์ฌ๋ ค ํ ๋๋ค.') console.log(ingredient+',', '๋จ๋ฌด์ง,', '๋ง์ด,','์๊ธ์น๋ฅผ ์ฌ๋ฆฝ๋๋ค.') console.log('๊น๋ฐฅ์ ๊ท ์ผํ๊ฒ ์ฐ์ด ํฌ์ฅํฉ๋๋ค.') let kimbab = who + '๋์ด ์ฃผ๋ฌธํ ' + ingredient + 'Kimbap์ด ์์ฑ๋์์ต๋๋ค.'; return kimbab } // order1 let order1 = makeKimbab('์ฌ์') console.log(order1) // ์ฌ์๋์ด ์ฃผ๋ฌธํ BasicKimbap์ด ์์ฑ๋์์ต๋๋ค. // order2 let order2 = makeKimbab('ํ์ง', 'Tuna', 'Kimchi', 'Spam', 'Cheese') console.log(order2) // ํ์ง๋์ด ์ฃผ๋ฌธํ Tuna,Kimchi,Spam,CheeseKimbap์ด ์์ฑ๋์์ต๋๋ค. // order3 let order3 = makeKimbab('๋ณด๋', 'Pig', 'Kimchi', 'Anchovy') console.log(order3) // ๋ณด๋๋์ด ์ฃผ๋ฌธํ Pig,Kimchi,AnchovyKimbap์ด ์์ฑ๋์์ต๋๋ค.
ํจ์์ ๋ณต์ฌ๋ ์๋์ฒ๋ผ ์๋ก์ด ๋ณ์์ ๋ฃ์ด์ฃผ๋ฉด ๋ ๋ค๋ฅธ ์ด๋ฆ์ผ๋ก ๊ฐ์ ๊ธฐ๋ฅ์ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ด์. ์ฃผ์ํ ์ ์ ()๋ฅผ ๋ถ์ด๋ฉด ์๋ฉ๋๋ค. ()๋ฅผ ๋ถ์ธ๋ค๋๊ฑด ํจ์์ ํธ์ถํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํธ์ถ๋ ๊ฒฐ๊ณผ๊ฐ์ด ์๋ก์ด ๋ณ์์ ๋ด๊ธฐ๊ธฐ ๋๋ฌธ์ ๋๋ค.
// ํจ์ ๋ณต์ฌ function makeKimbab(who, ingredient){ let kimbab = `${who}๋์ด ์ฃผ๋ฌธํ ${ingredient} Kimbap์ด ์์ฑ๋์์ต๋๋ค.` return kimbab } makeKimbab2 = makeKimbab console.log(makeKimbab2('์ฌ์', 'Tuna')) console.log(makeKimbab('ํ์ง', 'Spam'))
ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ํจ์์ฒ๋ผ ์ฌ์ฉํ๋ฉด, ์๋์ฒ๋ผ TypeError์ด ๋ฐ์ํฉ๋๋ค.
// ํจ์๊ฒฐ๊ณผ ๋ณต์ฌ function makeKimbab(who, ingredient){ let kimbab = `${who}๋์ด ์ฃผ๋ฌธํ ${ingredient} Kimbap์ด ์์ฑ๋์์ต๋๋ค.` return kimbab } makeKimbab2 = makeKimbab() console.log(makeKimbab2('์ฌ์', 'Tuna')) // TypeError: makeKimbab2 is not a function
์ฆ, ํจ์๋ฅผ ๋ณต์ฌํ๋ค๋ ์๋ฏธ๋ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ํจ์๋ก ์ด์ฉํ๊ณ ์ถ์ ๋, ์ฌ์ฉํฉ๋๋ค. ๋ง์น ๊น๋ฐฅ ๋จธ์ ์ ํ๋ ๋ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด์ ๋ฐ๋๋ก ํจ์๊ฐ ํธ์ถ๋์ด ๋ฐํํ ๊ฒฐ๊ณผ๋ ํจ์์ฒ๋ผ ์ฌ์ฉํ ์ ์์ ๋ฟ๋ง์๋๋ผ, ๊ฐ์ ๊ฐ๊ณ ์๋ ๋ณ์์ผ ๋ฟ์ ๋๋ค.
ํ์ดํ ํจ์(Arrow Function)๋ ES6์ ์ถ๊ฐ๋ ๋ฌธ๋ฒ์ผ๋ก ํจ์ ํํ์์ ๋์ฑ ๊ฐ๊ฒฐํ๊ฒ ๋ง๋ค์ด ์ค๋๋ค. ํ์ดํ ํจ์๋ ์ต๋ช
ํจ์๋ก ์๋์ ๊ฐ์ ๊ท์น์ผ๋ก ํจ์ํํ์์ ์ถ์ฝํ์ฌ ํํํ ์ ์์ต๋๋ค. ์ต์ํด์ง๋๋ฐ ์๊ฐ์ ๊ฑธ๋ฆฌ์ง๋ง, ์ด๋ฐ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผํ ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋์ ์ตํ๋ก์๋ค:)
๊ธฐ๋ณธ ํํ ๐ let ํจ์์ด๋ฆ = (parameter1, parameter2..) => {Function Body}
// ๊ธฐ๋ณธ ํจ์ ํํ์(์ต๋ช ํจ์) const add = function (a, b) { return a + b; }; // ํ์ดํ ํจ์(1๋จ body) const add = (a, b) => a + b; // ๐ body๊ฐ 1์ค์ผ ๋๋, {} ๋ฐ return ๊น์ง ์๋ต ๊ฐ๋ฅ // ํ์ดํ ํจ์(2๋จ ์ด์ body) const add = (a, b) => { let result = a + b; return result; // ๐ ์ค์ฝํ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, return์ผ๋ก ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํ ํ์ };