λͺ©μ°¨
JSμ μ‘΄μ¬νλ 컀λ§μ λν΄μ μμ보μ.
1. 컀λ§μ΄λ?
컀λ§μ ν¨μμ ν¨κ» μ¬μ©νλ κ³ κΈκΈ°μ λ‘, JS λΏ μλλΌ λ€λ₯Έ μΈμ΄μμλ μ¬μ©ν μ μλ κΈ°μ μ΄λ€.
νμν μΈμλ³΄λ€ μ μ μμ μΈμλ₯Ό λ°μΌλ©΄, λλ¨Έμ§ μΈμλ₯Ό μΈμλ‘ λ°λ λ€λ₯Έ ν¨μλ₯Ό λ°ννλ€.
μ¦, ν ν¨μλ₯Ό μ€ννκΈ° μν΄ νμν μΈμκ° μμ§ λ μ€λΉ λμμ κ²½μ°
νμ¬ μ‘΄μ¬νλ μΈμλ₯Ό μ μ₯νκΈ° μν΄μ 컀λ§μΌλ‘ μμ±ν μ μλ€.
μμ 1)
μλλ μΌλ°μ μΌλ‘ ν¨μλ₯Ό μμ±ν κ²½μ°μ΄λ€.
function mulTwoTerm (a, b, c, d) {
return (a + b) * (c + d);
}
const mulTwoTerm2 = (a, b, c, d) => (a + b) * (c + d);
console.log(
mulTwoTerm(1, 2, 3, 4),
mulTwoTerm2(1, 2, 3, 4),
);
>>> 21 21
μ΄λ¬ν κ²½μ° ν¨μ νΈμΆ μ ν λ²μ 4κ°μ μΈμλ₯Ό λͺ¨λ λ°μ ν κ°μ λ°ννλ€.
μμ 2)
μλλ 컀λ§μΌλ‘ ν¨μλ₯Ό μμ±ν κ²½μ°μ΄λ€.
function curryMulTwoTerm (a){
return function (b) {
return function (c) {
return function (d) {
return (a + b) * (c + d);
}
}
}
}
const curryMulTwoTerm2 = a => b => c => d => (a + b) * (c + d);
console.log(
curryMulTwoTerm(1)(2)(3)(4),
curryMulTwoTerm2(1)(2)(3)(4),
);
>>> 21 21
νΈμΆ μ μΌλ°μ μΈ ν¨μμ λ€λ₯Έ κ²μ μ μ μλ€.
맀κ°λ³μμ κ°μ μ λ¬ν λ ν λ²μ μ²λ¦¬νλ κ²μ΄ μλ νλμ© μ λ¬νλ λ°©μμ΄λ€.
μ΄λ₯Ό νμ©νλ μμλ₯Ό μ’ λ μ΄ν΄λ³΄μ.
const curryMulTwoTermA = curryMulTwoTerm(1);
const curryMulTwoTermB = curryMulTwoTerm(1)(2);
const curryMulTwoTermC = curryMulTwoTerm(1)(2)(3);
console.log(curryMulTwoTermA);
console.log(curryMulTwoTermB);
console.log(curryMulTwoTermC);
>>>
ƒ (b) {
return function (c) {
return function (d) {
return (a + b) * (c + d);
}
}
}
>>>
ƒ (c) {
return function (d) {
return (a + b) * (c + d);
}
}
>>>
ƒ (d) {
return (a + b) * (c + d);
}
μμ κ²°κ³Όλ₯Ό 보면 μ ν¨μμ μΈμλ³΄λ€ μ κ² μ λ¬μ ν κ²½μ°
κ°κ°μ λ¨κ³ λ³ ν¨μλ₯Ό λ°ννλ κ²μ μ μ μλ€.
μ΄λ₯Ό μ΄μ΄μ μΆκ°λ‘ κ°μ μ λ¬νλ©΄
console.log(
curryMulTwoTermA(2)(3)(4),
curryMulTwoTermB(3)(4),
curryMulTwoTermC(4)
);
>>> 21 21 21
λͺ¨λ κ°μ κ°μ λ°ννλλ‘ κ°μ μ λ¬ν μμμ΄λ€.
μ΄μ²λΌ ν¨μ μ€νμ νμν λͺ¨λ μΈμλ₯Ό ν λ²μ λ°μ μ μλ κ²½μ°
컀λ§μ ν΅ν΄ μμ±ν ν¨μλ₯Ό νμ©ν μ μλ€.
'π | WEB DEV > Vanilla JS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JS_κΈ°μ (2)_ IIFE(μ¦μ μ€ν ν¨μ νν) (0) | 2023.03.16 |
---|---|
JS_κΈ°λ³Έ λ¬Έλ² (22)_ 맀κ°λ³μ (κΈ°λ³Έκ°, arguments, λλ¨Έμ§ λ³μ, μ΄μμ μΈ ν¨μ?) (0) | 2023.03.12 |
JS_κΈ°λ³Έ λ¬Έλ² (21)_ μΌκΈ κ°μ²΄ (0) | 2023.03.11 |
JS_κΈ°λ³Έ λ¬Έλ² (20)_ for 루ν+ (0) | 2023.03.08 |
JS_κΈ°λ³Έ λ¬Έλ² (19)_ caseλ¬Έ, κ°μ²΄ νμ© λ³ν caseλ¬Έ (0) | 2023.03.07 |
λκΈ