π ν¨μ (Function)
: μ¬μ¬μ© κ°λ₯ν μ½λ λΈλ‘μ μ μ
β ν¨μ μ₯μ
- μ¬μ¬μ©μ± - λμΌν μμ
μ λ°λ³΅ν΄μ μ¬μ©ν μ μλλ‘ μ½λλ₯Ό μ¬νμ©
- λͺ¨λν - μ½λλ₯Ό μμ λͺ¨λλ‘ λΆν νμ¬ κ΅¬μ‘°ννκ³ , μ μ¬ν κΈ°λ₯μ κ°μ§ ν¨μλ€μ λ¬Άμ΄ κ΄λ¦¬
- κ°λ
μ± - ν¨μλ λͺ
νν κΈ°λ₯μ λ΄λΉνκ³ μ΄λ¦μ λΆμ¬νμ¬ μ½λλ₯Ό μ½κΈ° μ½κ² λ§λλλ€.
- μ μ§ λ³΄μμ± - μ½λλ₯Ό ν¨μ λ¨μλ‘ λλμ΄ μμ μ΄ μ©μ΄νκ³ , κ΄λ ¨ κΈ°λ₯μ μμ ν λ λ€λ₯Έ λΆλΆμ μν₯μ μ€μ΄λ©° μ μ§ λ³΄μκ° μ¬μ
- λλ²κΉ
- κ° ν¨μλ λ
립μ μΌλ‘ ν
μ€νΈλλ―λ‘ μ½λλ₯Ό λλ²κΉ
νκΈ° λ μ¬μ
- μ½λ μ¬κ΅¬μ‘°ν - ν¨μλ μ½λλ₯Ό μ½κ² μ¬μ‘°λ¦½νκ³ μ¬κ΅¬μ±ν μ μλλ‘ λμμ€
β ν¨μ νν λ°©λ²
β« ν¨μ μ μΈμ(Function Declaration)
function ν€μλλ₯Ό μ¬μ©νμ¬ ν¨μλ₯Ό μ μΈ
function greet(name) {
return "Hello, " + name + "!";
}
β« ν¨μ ννμ(Function Expression)
λ³μμ ν¨μλ₯Ό ν λΉνλ λ°©μ
var greet = function(name) {
return "Hello, " + name + "!";
};
β« νμ΄ν ν¨μ(Arrow Function)
κ°κ²°ν λ¬Έλ²μΌλ‘ ν¨μλ₯Ό μ μνλ λ°©μ
var greet = (name) => "Hello, " + name + "!";
π± ν¨μ (function)
- νλ‘κ·Έλλ°μ ν΅μ¬μ μΈ κ΅¬μ±μμ
- νΉμ μμ
μ μννκ±°λ κ°μ κ³μ°νκΈ° μν μ½λ λΈλ
- μμ ν¨μ / μΌκΈ ν¨μλ‘ κ΅¬λΆ
μμ ν¨μ(Pure Functions)
: μ
λ ₯κ°μ λν΄ νμ λμΌν κ²°κ³Όλ₯Ό λ°ννλ©°, λΆμμ©(side effect)μ΄ μλ ν¨μ
λΆμμ© = ν¨μ μΈλΆμ μνλ₯Ό λ³κ²½νκ±°λ λ€λ₯Έ μΈλΆ μνμ μμ‘΄νλ κ²
def add(a, b): # μμ ν¨μ
return a + b
μμ ν¨μμ μ₯μ
-
κ²°μ μ (Deterministic) λμ
-
λΆμμ© (Side Effects)μ΄ μλ μ½λ©
-
ν¨μλ₯Ό λ€λ£¨λλ° μμ΄ λ³μμ λμΌνκ² λ€λ£¨λ λ°©μ
ν¨μλ₯Ό λ³μμ ν λΉ
ν¨μλ₯Ό λ€λ₯Έ ν¨μμ μ λ¬
ν¨μκ° ν¨μλ₯Ό λ°ν
μΌκΈ ν¨μ (First-Class Functions)
: ν¨μλ₯Ό λ€λ£¨λλ° μμ΄μ λ³μμ λμΌνκ² λ€λ£¨λ λ°©μ
- ν¨μλ₯Ό λ€λ₯Έ ν¨μμ λ§€κ°λ³μλ‘ μ¬μ© κ°λ₯, ν¨μκ° ν¨μλ₯Ό λ°ν κ°λ₯, λ³μμλ ν λΉ κ°λ₯
- ν¨μλ₯Ό μ μ°νκ² μ¬μ© κ°λ₯
def apply_operation(operation, x, y): #μΌκΈ ν¨μ
return operation(x, y)
def add(a, b):
return a + b
def multiply(a, b):
return a * b
result1 = apply_operation(add, 3, 4) # add ν¨μλ₯Ό μ λ¬
result2 = apply_operation(multiply, 3, 4) # multiply ν¨μλ₯Ό μ λ¬
print(result1) # μΆλ ₯: 7
print(result2) # μΆλ ₯: 12
μ½λ°± ν¨μλ₯Ό μ΄μ©ν λΉλκΈ° νλ‘κ·Έλλ°
- μ½λ°± ν¨μλ₯Ό λ겨 μ¬μ©ν λ Callback Hellμ λΉ μ§ μ μκΈ° λλ¬Έμ μ£Όμν΄μ μ¬μ©ν΄μΌ ν¨
λ°°μ΄ λ©μλμ μ½λ°± ν¨μ
- μΌκΈ ν¨μμ κ°λ
μ νμ©
- κ° μμμ λν΄ μ€νν ν¨μλ₯Ό μΈμλ‘ λ°μ
ν¨μλ₯Ό λ°ννλ ν¨μ
- ν¨μκ° λ€λ₯Έ ν¨μλ₯Ό λ°νν μ μμ
- νΉμ λ°μ΄ν°λ₯Ό μΈλΆλ‘λΆν° 보νΈ
- λ
μμ μΈ νλ¦μ κ°μ§
π ν¨μ μ»΄ν¬μ§μ
: λ ν¨μλ₯Ό μ‘°ν©νμ¬ μλ‘μ΄ μμ
μ μννλ ν¨μ