JavaScript์์ ํจ์๋ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํจ์๋ ํน์ ์์ ์ ์ํํ๋ ์ฝ๋ ๋ธ๋ก์ผ๋ก, ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ผ๋ฉฐ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์ผ๋ก ๋ง๋ค๊ณ , ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํด์ค๋๋ค. ์ด ๊ธ์์๋ JavaScript ํจ์์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋ค์ํ ํ์ฉ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
JavaScript ํจ์๋?
ํจ์๋ ์ ๋ ฅ์ ๋ฐ์ ํน์ ์์ ์ ์ํํ๊ณ , ํ์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ฝ๋์ ๋ฌถ์์ ๋๋ค. JavaScript์์ ํจ์๋ function ํค์๋๋ฅผ ์ฌ์ฉํด ์ ์ํ๋ฉฐ, ํจ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋ ์ ์์ต๋๋ค.
๊ธฐ๋ณธ ํจ์ ์ ์
JavaScript ํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค:
function ํจ์์ด๋ฆ(๋งค๊ฐ๋ณ์1, ๋งค๊ฐ๋ณ์2) {
// ์คํํ ์ฝ๋
return ๊ฒฐ๊ณผ๊ฐ; // ํ์์ ๊ฐ์ ๋ฐํ
}
์์ ๊ตฌ์กฐ๋ ํจ์๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๋ณด์ฌ์ค๋๋ค. ํจ์๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ ์ ์๊ณ , ๋ด๋ถ์์ ํน์ ์์
์ ์ํํ ํ return
๋ฌธ์ ํตํด ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค. ํจ์๋ ํ์ํ ๋๋ง๋ค ํธ์ถํ์ฌ ์คํํ ์ ์์ต๋๋ค.
ํจ์ ์์
์๋๋ ๋ ๊ฐ์ ์ซ์๋ฅผ ๋ํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ๊ฐ๋จํ ํจ์ ์์ ์ ๋๋ค:
function add(a, b) {
return a + b;
}
let result = add(5, 10);
console.log(result); // ๊ฒฐ๊ณผ: 15
์ด ์์ ์์ add()
ํจ์๋ ๋ ๊ฐ์ ์ธ์ a
์ b
๋ฅผ ๋ฐ์ ๋ํ ๊ฐ์ ๋ฐํํฉ๋๋ค. add(5, 10)
์ ํธ์ถํ๋ฉด ๊ฒฐ๊ณผ๋ 15๊ฐ ๋ฉ๋๋ค.
ํจ์ ํํ์
JavaScript์์๋ ํจ์๋ฅผ ๋ณ์์ ํ ๋นํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํจ์ ํํ์์ด๋ผ๊ณ ํ๋ฉฐ, ์ต๋ช ํจ์(์ด๋ฆ ์๋ ํจ์)๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
let multiply = function(a, b) {
return a * b;
};
console.log(multiply(4, 5)); // ๊ฒฐ๊ณผ: 20
์ ์์ ์์๋ ํจ์๊ฐ multiply
๋ผ๋ ๋ณ์์ ํ ๋น๋์์ต๋๋ค. ์ดํ multiply
๋ฅผ ํจ์์ฒ๋ผ ํธ์ถํ ์ ์์ต๋๋ค.
ํ์ดํ ํจ์ (Arrow Functions)
ES6(ECMAScript 2015)์์ ๋์ ๋ ํ์ดํ ํจ์๋ ํจ์ ํํ์์ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํนํ ์ฝ๋ฐฑ ํจ์๋ ์งง์ ํจ์์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
let subtract = (a, b) => a - b;
console.log(subtract(10, 3)); // ๊ฒฐ๊ณผ: 7
ํ์ดํ ํจ์๋ function
ํค์๋๋ฅผ ์ฌ์ฉํ ํ์ ์์ด =>
๊ตฌ๋ฌธ์ผ๋ก ํจ์๋ฅผ ์ ์ํฉ๋๋ค. ์ ์์ ์์ subtract
ํจ์๋ ๋ ๊ฐ์ ์ธ์๋ฅผ ๋ฐ์ ๋บ์
์ ์ํํฉ๋๋ค.
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ
ํจ์์ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์๋ ์ ํ ์ฌํญ์ด๋ฉฐ, ๋งค๊ฐ๋ณ์๊ฐ ์ ๊ณต๋์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์๋ ์์ต๋๋ค.
function greet(name = "Guest") {
return "Hello, " + name;
}
console.log(greet()); // ๊ฒฐ๊ณผ: "Hello, Guest"
console.log(greet("Alice")); // ๊ฒฐ๊ณผ: "Hello, Alice"
์ด ์์ ์์ greet
ํจ์๋ ๊ธฐ๋ณธ๊ฐ "Guest"
๋ฅผ ์ค์ ํด, ์ด๋ฆ์ด ์ ๋ฌ๋์ง ์์ผ๋ฉด "Hello, Guest"๋ผ๊ณ ์ถ๋ ฅํฉ๋๋ค.
์ฌ๊ท ํจ์
์ฌ๊ท ํจ์๋ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์์ ๋๋ค. ์ด ๋ฐฉ์์ ๋ฐ๋ณต์ ์ธ ์์ ์ ์ฒ๋ฆฌํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํฉํ ๋ฆฌ์ผ ๊ณ์ฐ์ ์ฌ๊ท ํจ์๊ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
function factorial(n) {
if (n === 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(5)); // ๊ฒฐ๊ณผ: 120
์ ์์ ์์ factorial
ํจ์๋ ์ซ์ 5์ ํฉํ ๋ฆฌ์ผ์ ์ฌ๊ท์ ์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
์ฆ์ ์คํ ํจ์ (IIFE)
์ฆ์ ์คํ ํจ์(Immediately Invoked Function Expression, IIFE)๋ ์ ์๋์๋ง์ ์ฆ์ ์คํ๋๋ ํจ์์ ๋๋ค. IIFE๋ ์ผ๋ฐ์ ์ผ๋ก ์ ์ญ ๋ณ์์ ์ค์ผ์ ๋ฐฉ์งํ๊ณ ๋ ๋ฆฝ์ ์ธ ์ฝ๋ ๋ธ๋ก์ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
(function() {
console.log("IIFE๊ฐ ์คํ๋์์ต๋๋ค!");
})();
์ด ์ฝ๋๋ ์ ์์ ๋์์ ์คํ๋๋ฉฐ, ๊ฒฐ๊ณผ๋ก "IIFE๊ฐ ์คํ๋์์ต๋๋ค!"๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
๊ฒฐ๋ก
JavaScript ํจ์๋ ํ๋ก๊ทธ๋จ์ ๋ฐ๋ณต์ ์ธ ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ ์ค์ํ ๋๊ตฌ์ ๋๋ค. ํจ์ ์ ์ธ, ํจ์ ํํ์, ํ์ดํ ํจ์, ์ฌ๊ท ํจ์, ์ฆ์ ์คํ ํจ์ ๋ฑ ๋ค์ํ ๋ฐฉ์์ผ๋ก ํจ์๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ฐฉ์์ ํน์ ์ํฉ์ ๋ฐ๋ผ ์ ์ฉํ๊ฒ ํ์ฉ๋ ์ ์์ต๋๋ค.
JavaScript ํจ์์ ๋ค์ํ ํ์ฉ ๋ฐฉ๋ฒ์ ์ตํ๊ณ ์ด๋ฅผ ์ค์ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณด์ธ์!
๋๊ธ ์ฐ๊ธฐ