Responsive Advertisement

JavaScript Functions: ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ํ™œ์šฉ๋ฒ•

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 ํ•จ์ˆ˜์˜ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ตํžˆ๊ณ  ์ด๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด์„ธ์š”!

๋Œ“๊ธ€ ์“ฐ๊ธฐ