๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend Dev/JavaScript

JavaScript์—์„œ ํ•จ์ˆ˜(function)๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ฐ˜์‘ํ˜•

๐Ÿ‘พ ํ•จ์ˆ˜(function)๋ž€?

 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ๋ธ”๋ก์ด๋ฉฐ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ํ•จ์ˆ˜๋Š” ์ธ์ž๋ฅผ ๋ฐ›์•„๋“ค์ด๊ณ  ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฆ„, ๋งค๊ฐœ๋ณ€์ˆ˜, ์‹คํ–‰ํ•  ์ฝ”๋“œ ๋ธ”๋ก ๋ฐ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ฝ”๋“œ ๋ธ”๋ก์ด ์‹คํ–‰๋˜๊ณ  ๋ฐ˜ํ™˜๊ฐ’์ด ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ฐ˜ํ™˜๋œ๋‹ค.

 

// ํ•จ์ˆ˜์„ ์–ธ๊ณผ ํ˜ธ์ถœ ๋ฌธ๋ฒ•

// 1. ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์•ˆ๋„ฃ๊ณ  ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
function ํ•จ์ˆ˜๋ช…(){
  // ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹คํ–‰๋ฌธ;
}
ํ•จ์ˆ˜๋ช…();

// 2. ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ๊ณ  ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
function ํ•จ์ˆ˜๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜1, ๋งค๊ฐœ๋ณ€์ˆ˜2...){
  // ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹คํ–‰๋ฌธ;
}
ํ•จ์ˆ˜๋ช…(์ธ์ž๊ฐ’1, ์ธ์ž๊ฐ’2...);

• ํ•จ์ˆ˜๋ช…: ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์‹๋ณ„์ž(identifier)

• ๋งค๊ฐœ๋ณ€์ˆ˜(parameter): ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ž(argument)๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜

• ์ธ์ž(argument): ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ํ•จ์ˆ˜๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜

 

 

๐Ÿ‘พ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ์ง€์—ญ ๋ณ€์ˆ˜(local variable)์™€ ์™ธ๋ถ€์˜ ์ „์—ญ ๋ณ€์ˆ˜(global variable)

let name = "fay"; // ์ „์—ญ ๋ณ€์ˆ˜

function greeting() {
  let sayHi = "์•ˆ๋…•ํ•˜์„ธ์š”"; // ์ง€์—ญ ๋ณ€์ˆ˜
  name = "Elly";  

  return `${sayHi}, ${name}`
}

greeting(); // "์•ˆ๋…•ํ•˜์„ธ์š”, Elly"

console.log(sayHi) // ReferenceError: sayHi is not defined

→ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์ธ ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

→ ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด, ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผ ๋ฐ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๐Ÿ‘พ ํ•จ์ˆ˜ ์ด๋ฆ„์ง“๊ธฐ

 ํ•จ์ˆ˜๋Š” ์–ด๋–ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋†“์€ ๊ฒƒ์œผ๋กœ, ํ•จ์ˆ˜์˜ ์ด๋ฆ„์€ ๋Œ€๊ฐœ ๋™์‚ฌ์ด๋‹ค. ํ•จ์ˆ˜ ์ด๋ฆ„์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•ด์•ผ ํ•˜๋ฉฐ, ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

 ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ์ถ•์•ฝํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ๋Š” ๋™์‚ฌ๋ฅผ ์ ‘๋‘์–ด๋กœ ๋ถ™์—ฌ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋งŒ๋“œ๋Š” ๊ฒŒ ๊ด€์Šต์ด๋ฉฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์ ‘๋‘์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

show...   // ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณด์—ฌ์คŒ
age...    // ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
calc...   // ๋ฌด์–ธ๊ฐ€๋ฅผ ๊ณ„์‚ฐํ•จ
create... // ๋ฌด์–ธ๊ฐ€๋ฅผ ์ƒ์„ฑํ•จ
check...  // ๋ฌด์–ธ๊ฐ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋ถˆ๋ฆฐ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ

 

 

๐Ÿ‘พ ํ•˜๋‚˜์˜ ๋™์ž‘๋งŒ ๋‹ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜

 ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์— ์–ธ๊ธ‰๋˜์–ด ์žˆ๋Š” ๋™์ž‘์„ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋ฉฐ, ๋…๋ฆฝ์ ์ธ ๋‘ ๊ฐœ์˜ ๋™์ž‘์€ ๋…๋ฆฝ๋œ ํ•จ์ˆ˜ ๋‘ ๊ฐœ์—์„œ ๋‚˜๋ˆ ์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. ํ•œ ์žฅ์†Œ์—์„œ ๋‘ ๋™์ž‘์„ ๋™์‹œ์— ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ œ 3์˜ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๊ทธ๊ณณ์—์„œ ๋‘ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“Œ ์ง€์–‘ํ•ด์•ผ ํ•  ํ•จ์ˆ˜ ์‚ฌ์šฉ๋ฒ•

getAge ํ•จ์ˆ˜์— ๋‚˜์ด๋ฅผ ์–ป์–ด์˜ค๋Š” ๋™์ž‘ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‚˜์ด๋ฅผ ์ถœ๋ ฅํ•ด ์ฃผ๋Š” ๋™์ž‘์„ ๋„ฃ๋Š” ๊ฒฝ์šฐ

createForm ํ•จ์ˆ˜์— form์„ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋™์ž‘ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ form์„ ๋ฌธ์„œ์— ์ถ”๊ฐ€ํ•˜๋Š” ๋™์ž‘ ๋“ฑ์„ ๋„ฃ๋Š” ๊ฒฝ์šฐ

checkPermission ํ•จ์ˆ˜์— ์Šน์ธ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋™์ž‘ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์Šน์ธ ์—ฌ๋ถ€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šฐ๋Š” ๋™์ž‘์„ ํ•จ๊ป˜ ๋„ฃ๋Š” ๊ฒฝ์šฐ

 

ํ•จ์ˆ˜๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ํ…Œ์ŠคํŠธ์™€ ๋””๋ฒ„๊น…์ด ์‰ฌ์›Œ์ง€๊ณ , ํ•จ์ˆ˜ ๊ทธ ์ž์ฒด๋กœ ์ฃผ์„์˜ ์—ญํ• ๊นŒ์ง€ ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 


์ž๋ฃŒ์ถœ์ฒ˜: JAVASCRIPT.INFO

โœ๏ธ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ •๋ณด๋‚˜ ๋” ๊ณต์œ ํ•  ๋‚ด์šฉ์ด ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ์•Œ๋ ค์ฃผ์„ธ์š”!

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜Š

๋ฐ˜์‘ํ˜•