오늘 나는 다음 문법 기능을 구현하는 테스트 질문을 보았습니다.
var a = add (2) (3) (4); // 9
이것은 고차 기능의 적용입니다. 분석 : 추가 (2)는 함수를 반환하고 (2) (3)도 함수를 반환하고 마지막으로 (2) (3) (4) 숫자 값을 반환합니다.
성취하다:
함수 추가 (num1) {return function (num2) {return function (num3) {return num1+num2+num3;}} add (2) (3) (4); // 9이것에는 아무런 문제가 없으며 문제를 완벽하게 해결할 수 있습니다.
최적화 : 고차 기능에 대한 부분 만 여기에서 설명합니다. 더 나은 솔루션을 위해 무한한 통화를 구현할 수 있습니다.
// 메소드 1 기능 추가 (a) {var temp = function (b) {return add (a + b);} temp.valueof = temp.tostring = function () {return a;}; return temp;} add (2) (3) (4); // 14 // 메소드 2. = num; return add;} add.valueof = add.tostring = function () {return add.num}; var a = add (3) (4) (5) (6); // 18 // 메소드 2 주석 : 실제로는 동일하지만 값을 저장하기 위해 기능에 맞춤 속성이 적용됩니다. ; (function () {var sum = 0; function add (num) {sum+= num; return add;} add.valueof = add.toString = function () {return sum;} window.add = add;}) () var (3) (4) (5) (6); // 18 [/코드]이것은 내가 [url = http : //www.cnblogs.com/wengxuesong/p/5577683.html] 블로그 가든 [/url]에서 본 기사에서 쓴 것입니다. 메소드 1과 메소드 2를 이해 한 적이 없으며 콘솔에서 [code = javaScript, javaScript 코드, true] 기능을 출력하려고했습니다.
var temp = function () {} temp.valueof = function () {return 2;} temp.tostring = function () {return 'hahh';} alert (temp); console.log (2 * temp);문자열로 변환 해야하는 경우 Tostring이 호출되며 숫자로 변환해야 할 때 가치가 호출됩니다.