π±βπ λͺ©ν
- JavaScriptμμ μ¬μ©λλ ν¨μ ννλ₯Ό μμλ³Ό μ μλ€.
π 1. κΈ°λ³Έν ν¨μ & ν¨μ μ μ
- μ½λλ₯Ό νμ©νκΈ° μν λ¬Άμ
- ν¨μ ννμ : λ°νμ μ, νΈμ΄μ€ν
μΌλ‘ μΈν΄, μ½λ μ€νμ μ λ‘λλλ€.
- ν¨μ μ μΈμ : λ³μ ννλ‘ μ μ₯λμ΄, μ½λκ° λΌμΈμ μ κ·Ό μ, λ‘λλλ€.
function myFn(x) {}
const myFnV2 = function () {}
π 2. λ€μν JavaScript ν¨μ
1) μ΅λͺ
ν¨μ (Anonymous function)
- μλ°μ€ν¬λ¦½νΈλ ν¨μλ₯Ό κ°μΌλ‘ μ·¨κΈν μ μλ€.
- λ³μμ λ£μ΄μ μ¬μ©νλ ν¨μ
const myFn = function () {
return 100;
}
- ν¨μ μμ± ν, λ°λ‘ μ€ν
- νλ²λ§ μ€νν μ μλ ν¨μ
- ES5 λͺ¨λ
(function() {
console.log('μ¦μ μ€ν ν¨μ μ€ν!');
})();
3) μΈμμ λ°λ₯Έ νΈμΆ λ°©λ²
- μλ°μ€ν¬λ¦½νΈ μ μΈλμ§ μμ μΈμλ νΈμΆ λΆλΆμμ λκΈΈ μ μλ€.
const myFn = function (a, b) {
return 100;
}
const arr = [10,20,30];
myFn(10, 20, 30);
myFn.call(null, 10,20,30);
myFn.apply(null, arr);
- (1) μΌλ°μ μΈ νΈμΆ λ°©λ²
- (2) fn.call(context, args);
- (3) fn.apply(context, [...args]);
4) κ°λ³ ν¨μ (Argument function)
- μΈμλ‘ μ μΈλμ§ μμ μΈμλ₯Ό λ°κΈ° μν¨
- arguments ννλ‘ μ¬μ©λ¨
- νμ μμ λ Best Practice
function sum(a,b, ...args) {}
5) νμ΄ν ν¨μ (Arrow function)
- μ΅λͺ
ν¨μ ννλ‘ μ¬μ©λ¨
- context, prototype λΆλΆμμ μΌλ° ν¨μμ μ°¨μ΄λ₯Ό 보μ
const myFn = () => 'success !!!';
6) μμ±κΈ° ν¨μ (Generator function)
- κΈ°μ‘΄ ν¨μ : μ μΈ, νΈμΆλ‘ λμ λ
- μμ±κΈ° ν¨μ : μ μΈ, μ€λΉ, μ€ν, μ μ§
function* gen() {
yield 10;
yield 20;
return 30;
}
const g = gen();
g.next();
g.next();
g.next();
7) λΉλκΈ° ν¨μ (Asychronous function)
- Promise ννκ° μ ν νμ΅μ΄ λμ΄μΌ ν¨
- Promise ννλ₯Ό async / awaitλ‘ μ²λ¦¬
async function myTask() {}
μ°Έκ³
ν¨μ€νΈμΊ νΌμ€ κΉλ―Όνμ νλ‘ νΈμλ μμΉ΄λ°λ―Έ