자바스크립트에서 Currying을 사용하여 함수의 호출 시점을 어떻게 조절할 수 있나요?
Currying을 구현하는 가장 간단한 방법은 클로저를 사용하는 것입니다. 클로저는 내부 함수에서 외부 함수의 변수에 접근할 수 있도록 해줍니다. 아래는 Currying을 사용한 예제 코드입니다.
function add(x) {
return function(y) {
return x + y;
}
}
// Currying된 함수를 호출
let increment = add(1);
console.log(increment(5)); // 6
// 또 다른 방법으로 Currying된 함수를 한 번에 호출
console.log(add(3)(2)); // 5
위 코드에서 add
함수는 첫 번째 인자 x
를 받고, 그 값을 두 번째 함수로 전달하여 더한 후 결과를 반환합니다. 이렇게 나눠진 호출은 각각의 인자를 전달하여 호출할 수 있습니다.
첫 번째 호출에서 add(1)
은 x
변수에 1을 할당하고, 나머지 y
값을 받기 위해 함수를 반환합니다. 이후 increment(5)
의 호출은 x
값에 1이 유지되며, y
값으로 5를 전달하여 1 + 5의 결과인 6을 반환합니다.
두 번째 호출은 add(3)(2)
를 한 번에 호출하여 x
값을 3으로, y
값을 2로 설정하고 결과인 5를 반환합니다.
Currying을 사용하면 함수 호출의 시점을 자유롭게 조절할 수 있고, 함수의 재사용성과 유지보수성을 높일 수 있습니다. 또한, 부분 적용이 가능해져 코드의 가독성과 유연성을 높일 수 있습니다.
#javascript #currying