λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
JavaScript

ν•¨μˆ˜

by ν•΄-온 2023. 2. 19.

πŸ‹ ν•¨μˆ˜

μž…λ ₯을 λ°›μ•„ 좜λ ₯을 λ‚΄λ³΄λ‚΄λŠ” 일련의 κ³Όμ •

 

// ν•¨μˆ˜ μ •μ˜
function ν•¨μˆ˜μ΄λ¦„(λ§€κ°œλ³€μˆ˜) {
  return λ°˜ν™˜κ°’;
}

ν•¨μˆ˜μ΄λ¦„(인수) // ν•¨μˆ˜ 호좜

 

function add(a, b) {
  return a + b;
}

const result = add(1, 2);
console.log(result); //3

 

πŸ‹ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

λ§Œμ•½ λ™μΌν•œ μž‘μ—…μ„ 반볡적으둜 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€λ©΄ 같은 μ½”λ“œλ₯Ό 계속 μž‘μ„±ν•΄μ•Ό ν•œλ‹€.

μ΄λ•Œ 미리 μ •μ˜λœ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 쀑볡을 μ œκ±°ν•˜κ³  μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜λŠ” 것에 μœ λ¦¬ν•˜λ‹€.

 

let a = 0;
let b = 0;
let addResult = 0;

a = 1;
b = 1;
addResult = a + b;

a = 2;
b = 2;
addResult = a + b;

//이 μ½”λ“œλ₯Ό μ΄λ ‡κ²Œ ν•¨μˆ˜λ‘œ λ°”κΏ€ 수 μžˆλ‹€
function add(a, b){
return a + b;
}

let addResult = 0;
addResult = add(1,1);
addResult = add(2,2);

 

πŸ‹ ν•¨μˆ˜ μ •μ˜

ν•¨μˆ˜μ˜ μ •μ˜ λ°©μ‹μ—λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆλ‹€. 

ν•¨μˆ˜ μ„ μ–Έλ¬Έ, ν•¨μˆ˜ ν‘œν˜„μ‹, Function μƒμ„±μž ν•¨μˆ˜, ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ μžˆλ‹€. 

 

ν•¨μˆ˜ μ„ μ–Έλ¬Έ 

function name() {

}

 

function add(a, b){
	return a + b;
}

 

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

const name = function() { 

}

 

const add = function (a, b) {
  return a + b;
};

console.log(add(1, 2));

 

Function μƒμ„±μž ν•¨μˆ˜

const name = new Function()

 

const add = new Function('a', 'b', 'return a + b');

 

ν™”μ‚΄ν‘œ ν•¨μˆ˜

const name = () => { }

 

const add = (a, b) => a + b;

 

πŸ‹ λ°˜ν™˜λ¬Έ

ν•¨μˆ˜λŠ” return을 톡해 μ‹€ν–‰ κ²°κ³Όλ₯Ό μ™ΈλΆ€λ‘œ λ°˜ν™˜ν•  수 μžˆλ‹€.

return을 λͺ…μ‹œμ μœΌλ‘œ ν•˜μ§€ μ•ŠμœΌλ©΄ undefinedκ°€ λ°˜ν™˜λœλ‹€.

 

function add(a, b) {
  a + b;
}
const result = add(1, 2);
console.log(result); //undefined

 

return을 ν•¨μˆ˜ μ€‘κ°„μ—μ„œ ν•˜κ²Œ 되면 ν•¨μˆ˜κ°€ μ’…λ£Œλœλ‹€.

λ”°λΌμ„œ return 이후 λ‹€λ₯Έλ¬Έμ΄ μžˆλ‹€λ©΄ μ΄λŠ” μ‹€ν–‰λ˜μ§€ μ•ŠλŠ”λ‹€.

 

function add(a, b) {
  if (a < 0) {
  	return
 };
  console.log(a + b); //aκ°€ 0보닀 μž‘μ„ 경우 μ—¬κΈ°λŠ” μ‹€ν–‰λ˜μ§€ μ•ŠμŒ
}

 

πŸ‹ λ§€κ°œλ³€μˆ˜

ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ™ΈλΆ€μ—μ„œ λ‚΄λΆ€λ‘œ ν•„μš”ν•œ 값을 전달할 경우, λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 인수λ₯Ό μ „λ‹¬ν•œλ‹€.

λ§€κ°œλ³€μˆ˜μ˜ 기본값은 undefined이고, μΈμˆ˜κ°€ μˆœμ„œλŒ€λ‘œ ν• λ‹Ήλœλ‹€.

 

λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ°Έμ‘° κ°€λŠ₯ν•˜κ³ , μ™ΈλΆ€μ—μ„œλŠ” μ°Έμ‘°κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€.

λ”°λΌμ„œ λ§€κ°œλ³€μˆ˜μ˜ μ •λ³΄λŠ” ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•œ arguments 객체에 μ €μž₯λœλ‹€.

 

function add(a, b) {
  console.log(arguments); //[Arguments] { '0': 1, '1': 2 }
  return a + b;
}
add(1, 2);

 

λ§Œμ•½ λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜μ™€ 인수의 κ°œμˆ˜κ°€ μΌμΉ˜ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

μΈμˆ˜κ°€ λΆ€μ‘±ν•  κ²½μš°λŠ” ν• λ‹Ήλ˜μ§€ μ•Šμ€ λ§€κ°œλ³€μˆ˜μ˜ 값이 undefined이고,

λ§€κ°œλ³€μˆ˜κ°€ λΆ€μ‘±ν•  κ²½μš°λŠ” 초과된 μΈμˆ˜λŠ” λ¬΄μ‹œλ˜κ³  arguments μ•ˆμ— λ³΄κ΄€λœλ‹€.

 

function add(a, b) {
  console.log(arguments); //[Arguments] { '0': 1, '1': 2, '2': 3 }
  return a + b;
}
add(1, 2, 3); //3은 μ‚¬μš©λ˜μ§€ μ•ŠμŒ

 

μΈμˆ˜κ°€ λ§Žμ„ 경우 λ§€κ°œλ³€μˆ˜μ— λ‹€ λ„£κΈ° νž˜λ“€λ‹€.

μ΄λ•Œ, Rest Parametersλ₯Ό μ‚¬μš©ν•˜λ©΄ μ†μ‰½κ²Œ μž‘μ„±ν•  수 μžˆλ‹€.

 

function sum(...numbers) {
  console.log(numbers);
}
sum(1, 2, 3, 4, 5); //[ 1, 2, 3, 4, 5 ]

 

πŸ‹ μ½œλ°±ν•¨μˆ˜

λ§€κ°œλ³€μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό 전달받아, ν•¨μˆ˜μ˜ λ‚΄λΆ€μ—μ„œ μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜μ΄λ‹€.

 

const add = (a, b) => a + b;

function calculator(a, b, callback) {
  let result = callback(a, b);
  return result;
}

console.log(calculator(1, 2, add));

 

μœ„ ν•¨μˆ˜μ—μ„œ callback은 μ½œλ°±ν•¨μˆ˜μ΄λ‹€.

λ¨Όμ € ν•¨μˆ˜λ₯Ό 가리킀고 μžˆλŠ” ν•¨μˆ˜μ˜ 참쑰값이 μ „λ‹¬λ˜κ³ , ν•„μš”ν•œ μˆœκ°„μ— ν˜ΈμΆœλœλ‹€.

 

μ½œλ°±ν•¨μˆ˜μ˜ λ™μž‘ 방식을 λΉ„κ΅ν•˜μžλ©΄ 이와 κ°™λ‹€.

맛집에 κ°”λ‹€κ°€ λŒ€κΈ° 쀄이 κΈΈμ–΄μ„œ λŒ€κΈ°μž λͺ…단을 μΌμŠ΅λ‹ˆλ‹€.

μž…μž₯ν•˜κΈ° μ „κΉŒμ§€ 주변을 ꡬ경 λ‹€λ‹™λ‹ˆλ‹€.

그러던 쀑 식당에 μžλ¦¬κ°€ 났닀고 μ „ν™”κ°€ μ™”μŠ΅λ‹ˆλ‹€.
μ΄λ•Œ, μ „ν™”λ₯Ό λ°›λŠ” μ‹œμ μ΄ 콜백 ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜λŠ” μ‹œμ μž…λ‹ˆλ‹€.

μžλ¦¬κ°€ μ€€λΉ„λœ μ‹œμ μ— μ›ν•˜λŠ” λ™μž‘μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

'JavaScript' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

클래슀  (0) 2023.02.24
객체  (0) 2023.02.21
μ œμ–΄λ¬Έ  (0) 2023.02.19
μ—°μ‚°μž  (0) 2023.02.19
λ³€μˆ˜μ™€ 데이터 νƒ€μž…  (0) 2023.02.13

λŒ“κΈ€