>  기사  >  웹 프론트엔드  >  JS 커링 예제에 대한 자세한 설명

JS 커링 예제에 대한 자세한 설명

零下一度
零下一度원래의
2017-06-26 15:14:381479검색

1. Source

컴퓨터 과학에서 커링이란 여러 매개변수를 받는 함수를 단일 매개변수(원래 함수의 첫 번째 매개변수)를 받는 함수로 변환하고, 나머지 매개변수와 기법을 받는 함수를 반환하는 것을 말합니다. 결과를 반환하는 새로운 함수. 이 기술은 Moses Schnfinkel과 Gottlob Frege가 발명했지만 논리학자 Haskell Curry의 이름을 따서 Christopher Strachey가 명명했습니다.

2.curring(1)(2)(3)(4)() 결과가 10이 되도록 매개변수를 추가하는 방법은 무엇입니까?

1. 사실 각 매개변수를 어떻게 유지할지 고민만 하고 최종적으로 호출할 때 매개변수를 누적하면 되나요? 이것이 우리 생각의 초점입니다.

function keepParams(){var arg = [];return function params(){if(arguments.length === 0){return arg;
    }
    Array.prototype.push.apply(arg,arguments);  //对apply方法不熟悉的可以去百度下return params;
}
}var curring = keepParams();
console.log(curring(1)(2)(3)(4)()); // [1, 2, 3, 4]

2. 첫 번째 단계를 통해 매개변수를 얻을 수 있습니다. 그러면 다음에 원하는 작업을 수행할 수 있습니다.

덧셈을 어떻게 구현하나요?

3. 기본 기능 변경

function add(){var sum = 0,l = arguments.length;for(var i = 0; i < l; i++){
        sum += arguments[i];
    }return sum;
};function keepParams(fn){var arg = [];return function params(){if(arguments.length === 0){return fn.apply(this,arg);
        }
        Array.prototype.push.apply(arg,arguments);  //对apply方法不熟悉的可以去百度下return params;
    }
}var curring = keepParams(add);//console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 10

4. 이제 세 번째 덧셈 단계가 구현되었으니 곱셈과 나눗셈을 해보세요. 일련의 작업이 완료될 때까지 기다리십시오. 하지만 동일한 메소드를 연속으로 두 번 호출하는 경우에는 클로저 사용에 주의해야 합니다.

arg는 메모리에 저장됩니다

console.log(curring(1)(2)(3)(4)()); // 10console.log(curring(1)(2,3,4)()); // 20

위 내용은 JS 커링 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.