이 기사는 JavaScript로 카레 기능을 구현하기 위한 아이디어와 소스 코드를 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
구현 효과
const curry_fn = curry(fn); fn(1, 2, 3) == curry_fn(1)(2)(3);
클로저를 통해 들어오는 매개변수 저장
함수의 길이 속성을 통해 매개변수 개수를 가져옵니다
매개변수 개수가 부족할 경우 메서드가 직접 반환
저장된 매개변수의 개수가 원래 함수 매개변수의 개수와 같을 때 원래 함수가 실행됩니다
function curry(fn) { var length = fn.length; //获取原函数的参数个数 var args = []; // args存储传入参数 return function curryFn() { // 将arguments转换成数组 var curryArgs = Array.prototype.slice.call(arguments); args = args.concat(curryArgs); if (args.length > length) { throw new Error('arguments length error') } // 存储的参数个数等于原函数参数个数时执行原函数 if (args.length === length) { return fn.apply(null, args); } // 否则继续返回函数 return curryFn; }; }
function curry(fn) { let length = fn.length; let args = []; return function curryFn(...curryArgs) { args = args.concat(curryArgs); if (args.length > length) { throw new Error('arguments length error') } if (args.length === length) { return fn(...args); } return curryFn; } }
위 내용은 JavaScript에서 카레 기능을 구현하기 위한 아이디어와 소스 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!