πŸ“’TIL) JavaScript ν•¨μˆ˜(Function)

TaeYangΒ·2021λ…„ 8μ›” 6일
0

JavaScript

λͺ©λ‘ 보기
3/5
post-thumbnail

ν•¨μˆ˜(Function)λž€?

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” λ‹¨μˆœνžˆ λ™μž‘ ν•˜λ‚˜λ§Œ μ‹€ν–‰λ˜λŠ”κ²Œ μ•„λ‹ˆλΌ μ—¬λŸ¬κ°€μ§€ λ™μž‘μ΄ μ—°κ²°λ©λ‹ˆλ‹€.μ΄λ ‡κ²Œ λ™μž‘ν•΄μ•Ό ν•  λͺ©μ λ“€μ„ 묢은 λͺ…령을 ν•¨μˆ˜(Function)라고 ν•©λ‹ˆλ‹€.

ν•¨μˆ˜ μ„ μ–Έ 및 호좜

ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” κ°€μž₯ 기본적인 방법은 ν•¨μˆ˜λ₯Ό λ§Œλ“€λ•Œ 이름을 뢙이고 ν•„μš”ν•  λ•Œλ§ˆλ‹€ ν•¨μˆ˜ 이름을 μ‚¬μš©ν•΄ μ‹€ν–‰ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

βœ”οΈ ν•¨μˆ˜ μ„ μ–Έ

ν•¨μˆ˜κ°€ μ–΄λ–€ λͺ…령을 μ²˜λ¦¬ν• μ§€ 미리 μ•Œλ €μ£ΌλŠ” 것을 ν•¨μˆ˜λ₯Ό μ„ μ–Έν•œλ‹€ λ˜λŠ” ν•¨μˆ˜λ₯Ό μ •μ˜ν•œλ‹€ 라고 ν•©λ‹ˆλ‹€.
ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” functionμ΄λΌλŠ” μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜κ³  μ€‘κ΄„ν˜Έ{ } μ•ˆμ— μ‹€ν–‰ν•  μ—¬λŸ¬ λͺ…령듀을 λ„£μŠ΅λ‹ˆλ‹€.

function ν•¨μˆ˜λͺ…() {
    λͺ…λ Ή
{

βœ”οΈ ν•¨μˆ˜ 호좜

ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” κ²ƒλ§ŒμœΌλ‘œ ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€!. ν•¨μˆ˜λ₯Ό μ„ μ–Έν•œ 후에 λ”°λ‘œ μ‹€ν–‰ μ½”λ“œλ₯Ό μž…λ ₯ ν•΄μ£Όμ–΄μ•Ό ν•˜λŠ”λ° μ΄λ ‡κ²Œ μ„ μ–Έν•œ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€ λ˜λŠ” ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€ 라고 ν•©λ‹ˆλ‹€.

ν•¨μˆ˜λͺ…() λ˜λŠ” ν•¨μˆ˜λͺ…(λ³€μˆ˜)

ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  ν˜ΈμΆœν•˜λŠ” ν•˜λŠ”κ±Έ ν•œλ²ˆμ— 해보기

function myAge() {
  let a= "λ‚˜μ΄ : ";        // πŸ’‘μ§€μ—­λ³€μˆ˜
  let age = "25μ‚΄";
  console.log(a + age);
}
myAge()                       // λ‚˜μ΄ : 25μ‚΄

πŸ’‘ μ§€μ—­λ³€μˆ˜λž€ ν•¨μˆ˜ μ•ˆμ—μ„œ μ„ μ–Έν•˜κ³  ν•¨μˆ˜ μ•ˆμ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯ν•œ λ³€μˆ˜λ‹€.

μž¬μ‚¬μš©ν•  수 μžˆλŠ” ν•¨μˆ˜

λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•΄ μž…λ ₯을 λ°”κΏ” μ—¬λŸ¬λ²ˆ μ‚¬μš©ν•  수 μžˆλŠ” μ„±μ§ˆμ„ ν•¨μˆ˜μ˜ μž¬μ‚¬μš©μ„± 이라고 ν•˜λŠ”λ°
μž¬μ‚¬μš©μ„± 은 ν•¨μˆ˜μ˜ κ°€μž₯ 큰 μž₯점이라고 ν•  수 μžˆλ‹€.

  • λ§€κ°œλ³€μˆ˜(parameter)
    ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ–„λΆ€ν„° μ™ΈλΆ€μ—μ„œ 값을 λ°›μ•„ 쀄 λ³€μˆ˜λ₯Ό 미리 λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€. 이것을 λ§€κ°œλ³€μˆ˜(parameter)라 ν•˜κ³ 
    ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ κ΄„ν˜Έ( ) μ•ˆμ— λ§€κ°œλ³€μˆ˜μ˜ 이름을 λ„£μ–΄μ„œ μ“Έμˆ˜ μžˆμŠ΅λ‹ˆλ‹€.
  • λ°˜ν™˜(return)
    ν•¨μˆ˜μ˜ 결과값을 ν•¨μˆ˜ λ°–μ—μ„œ μ‚¬μš©ν•˜λ €λ©΄ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œ μœ„μΉ˜λ‘œ λŒλ €μ€˜μ•Όν•˜λŠ”λ°
    μ΄λŸ¬ν•œ λ™μž‘μ„ 값을 λ°˜ν™˜(return) 이라고 ν•©λ‹ˆλ‹€
  • 인수(augument)
    λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν• λ•Œ μ‹€μ œ κ°’ 뢀뢄을 인수(augument)라고 ν•©λ‹ˆλ‹€.
function numbers(num1, num2) {      // num1, num2 <-λ§€κ°œλ³€μˆ˜
  let sum = num1 + num2;            // num1κ³Ό num2λ₯Ό λ”ν•˜μ—¬ sumλ³€μˆ˜μ— μ €μž₯
  return sum;                       // λ°˜ν™˜ν•˜λŠ” κ°’ 지정
}
let result = numbers(2, 5);         // 2, 5 <-인수
console.log(result);                // 7   ν•¨μˆ˜ν˜ΈμΆœ

πŸ’‘ ν•¨μˆ˜μ•ˆμ— μžˆλŠ” λ³€μˆ˜sum은 λ‹¨μˆœνžˆ 결과값을 μ €μž₯ν–ˆλ‹€κ°€ λ°˜ν™˜ν•˜λ―€λ‘œ μ•„λž˜ μ˜ˆμ‹œμ²˜λŸΌ μ†ŒμŠ€λ₯Ό μ€„μ—¬μ„œ μž‘μ„± ν• μˆ˜μžˆλ‹€.

function numbers(num1, num2) {
  return num1 + num2;               //num1 κ³Ό num2λ₯Ό λ”ν•œν›„ 값을 λ°”λ‘œ λ°˜ν™˜
}
let result = numbers(2, 5);         
console.log(result);    

ν•¨μˆ˜ ν‘œν˜„μ‹

μ§€κΈˆκΉŒμ§€ μœ„μ—μ„œ μ‚΄νŽ΄λ³Έ ν•¨μˆ˜μ˜ μ‚¬μš© 방법은 ν•¨μˆ˜ μ΄λ¦„λ§Œ μ•Œλ©΄ μ–΄λ””μ„œλ‚˜ ν˜ΈμΆœν•  μˆ˜μžˆλŠ” λ°©λ²•μ΄μ˜€λ‹€.
μœ„ 방법 말고 ν•¨μˆ˜ 이름을 μ§€μ •ν•˜μ§€ μ•Šκ³  μ‚¬μš©ν•˜κ±°λ‚˜, ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•Šκ³  λ°”λ‘œ μ‹€ν–‰ν•˜λŠ” 방법을 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

βœ”οΈ 읡λͺ…ν•¨μˆ˜

읡λͺ… ν•¨μˆ˜λŠ” 이름이 μ—†λŠ” ν•¨μˆ˜λ₯Ό λ§ν•©λ‹ˆλ‹€.
즉 ν•¨μˆ˜λ₯Ό 이름을 뢙이지 μ•Šκ³  선언을 ν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

function(a, b) {     // 읡λͺ… ν•¨μˆ˜ μ„ μ–Έ
  return a + b;
}

⁉️ 읡λͺ… ν•¨μˆ˜λŠ” 이름이 μ—†λŠ”λ° μ–΄λ–»κ²Œ μ‹€ν–‰ν•΄μ•Ό ν• κΉŒμš”?
읡λͺ… ν•¨μˆ˜λŠ” μžμ²΄κ°€ μ‹μ΄μ—¬μ„œ λ³€μˆ˜μ— ν• λ‹Ήν•΄μ„œ μ“Έμˆ˜ 있고 λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œλ„ μ‚¬μš© ν• μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

let sum = function(a, b) {          // 읡λͺ… ν•¨μˆ˜λ₯Ό μ„ μ–Έν›„ sumλ³€μˆ˜μ— ν• λ‹Ή
  return a + b;
}
console.log(sum(100, 1000);         // 읡λͺ… ν•¨μˆ˜λ₯Ό μ‹€ν–‰

βœ”οΈ μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

보톡 ν•¨μˆ˜λŠ” μ„ μ–Έν•˜κ³  ν•„μš”ν• λ•Œ ν˜ΈμΆœν•΄μ„œ μ‹€ν–‰ν•˜λŠ” 방법을 많이 μ‚¬μš©ν•©λ‹ˆλ‹€.
ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” λ™μ‹œμ— μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λΌκ³  ν•©λ‹ˆλ‹€.

(function() {                 (function(λ§€κ°œλ³€μˆ˜) {
  λͺ…λ Ή                 λ˜λŠ”       λͺ…λ Ή  
}());                         }(인수));
(function()                   (function(a, b){           
  let name = "νƒœμ–‘"    λ˜λŠ”       sum = a + b;
}());                         }(777, 333));

βœ”οΈ ν™”μ‚΄ν‘œ ν•¨μˆ˜

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” =>λ₯Ό μ΄μš©ν•΄ 보닀 κ°„λ‹¨ν•˜κ²Œ ν•¨μˆ˜λ₯Ό μž‘μ„± ν• μˆ˜μžˆμŠ΅λ‹ˆλ‹€.
ES6 버전뢀터 생겼고 읡λͺ… ν•¨μˆ˜μ—λ§Œ μ‚¬μš©ν• μˆ˜ μžˆλ‹€κ³  ν•©λ‹ˆλ‹€.

βœ”οΈŽ(κΈ°λ³Έν˜•)

(λ§€κ°œλ³€μˆ˜) => {ν•¨μˆ˜ λ‚΄μš©}

λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” 경우

let name1 = function() {
  return "λΉ…λ±…νƒœμ–‘";
}
         ⬇️
let name1 = () => {return "λΉ…λ±…νƒœμ–‘"};
let name2 = () => "μ•„λ‹ˆκ·Έλƒ₯νƒœμ–‘";    <-μ΄λ ‡κ²Œ μ€‘κ΄„ν˜Έ{},return μƒλž΅ κ°€λŠ₯

λ§€κ°œλ³€μˆ˜κ°€ 1개인 경우

let name = function(user) {
console.log(user);
}
         ⬇️
let name = user => {console.log(user);}

λ§€κ°œλ³€μˆ˜κ°€ 2개인 경우

let sum = function(a, b) {
return a + b;
}
         ⬇️
let sum = (a, b) => a + b;

μ°Έκ³ 

JAVASCRIPT.INFO ν•¨μˆ˜
MDN Web Docs ν•¨μˆ˜
πŸ“’ Do it! HTML+CSS+μžλ°”μŠ€ν¬λ¦½νŠΈ μ›Ή ν‘œμ€€μ˜ 정석

νšŒκ³ πŸ€”

처음으둜 내생각을 써 λ³΄λŠ”κ±°κ°™μ€λ° 기술 λΈ”λ‘œκ·Έλ₯Ό μ“°λ©΄μ„œ λ‚΄κ°€ μ•Œκ³  μžˆλŠ” λ‚΄μš©μ΄ μ§„μ§œ λ§žλŠ”μ§€
μ˜μ‹¬μ΄ λ“œλŠ” 걸둜 보아 λ‚΄κ°€ λ„ˆλ¬΄ μ–•κ²Œ μ•Œκ±°λ‚˜ λͺ¨λ₯΄λŠ” 것이 λ„ˆλ¬΄ λ§Žμ•„ λ°˜μ„±μ΄ 많이 λ˜μ—ˆλ‹€.
더 μ—΄μ‹¬νžˆ κ³΅λΆ€ν•˜κ³  계속 글을 μ“°λ©΄ μ‘°κΈˆμ”© μ„±μž₯ ν• κ±° 같단 생각이 λ“ λ‹€.
글을 μž‘μ„±ν• λ•Œ λ‚΄κ°€ κ³΅λΆ€ν•œ λ‚˜μ˜ μ–Έμ–΄λ‘œ λ°”κΏ”μ„œ μ“°λŠ” 법을 κΈΈλŸ¬μ•Ό ν•œλ‹€λŠ”λ° 아직 λ‚˜μ˜ μ–Έμ–΄λ‘œ
μ“°κΈ°μ—λŠ” 역뢀쑱인거 κ°™μ•„μ„œ μ‘°κΈˆμ”© λ‚˜μ˜ 생각과 λ‚΄μš©λ“€μ„ λ‹΄μ•„μ„œ 쓰도둝 λ…Έλ ₯ν•΄μ•Όκ² λ‹€.πŸ™‚

profile
μŒμ•… 전곡 μ΄μ˜€λ˜ μ˜ˆλΉ„ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžβ˜€οΈ

0개의 λŒ“κΈ€