이것은 Javascript 객체의 힘을 보여주는 흥미로운 사실입니다. 우리가 해야 할 일은 이전 글에서 언급한 것처럼 Hello, World를 출력하는 것이고, 입력은 print('Hello')('World')인데, 이것이 소위 고수준 함수이다.
고차 함수
하이 레벨이라는 말은 고급 프로그래밍 기술을 가리키는 난해한 용어인 것 같아서 처음 봤을 때 그렇게 생각했습니다.
자바스크립트의 고차함수
그러나 고차 함수는 함수를 매개변수나 반환 값으로 취하는 함수일 뿐입니다. 위의 Hello, World를 간단한 예로 들어보겠습니다.
var Moqi = 함수(p1){
This.add = 함수(p2){
p1 ' ' p2 반환;
};
반품 추가;
};
이 기능을 이렇게 사용할 수 있습니다
console.log(Moqi('Hello')('World'));
어쩌면 이 과정이 다소 혼란스러울 수도 있으니 좀 더 자세히 살펴보세요.
> 모키('안녕하세요')의 종류
<- "함수"
>모치('안녕하세요')
<- 기능(p2){
p1 ' ' p2 반환;
}
즉, Moqi('Hello')는 실제로는 함수인 Moqi('Hello')
> var m = Moqi('안녕하세요')
>m('세계')
>"안녕하세요"
위의 상황에서 고차 함수를 사용하면 코드를 더욱 간결하고 효율적으로 만들 수 있습니다. 당연히 다음과 같은 기능을 만들 수도 있습니다.
>모치('안녕하세요')('세상')('포달')
>"안녕하세요 월드 포달"
그래서 이런 기능이 있군요
var Moqi = 함수(p1){
반환 함수(p2){
반환 기능(p3){
p1 ',' p2 ' ' p3 반환;
}
};
};
고차 함수 복원
점점 더 복잡해지고 있으며, 고차 함수 추상화를 도입해야 한다는 신호는 반복되거나 유사한 코드의 발생입니다. 그런 다음 단계별로 이전 기능으로 복원합니다.
var Moqi = 함수(p1){
This.add = 함수(p2){
반환 기능(p3){
p1 ',' p2 ' ' p3 반환;
}
};
이것을 반환하세요.추가;
};
그런 다음 새 함수를 만듭니다
코드 복사 코드는 다음과 같습니다.
var Moqi = 함수(p1){
This.add = 함수(p2){
This.add1 = 함수(p3){
p1 ',' p2 ' ' p3 반환;
};
return this.add1;
};
이것을 반환하세요.추가;
};
자바스크립트에서 호출 메소드를 사용하면 다음과 같습니다.
var Moqi = 함수(p1){
var self = this;
함수 fd(p2) {
This.add1 = 함수(p3) {
p1 ',' p2 ' ' p3 반환;
};
}
self.add = 함수(p2){
fd.call(this, p2);
return this.add1;
};
self.add를 반환합니다.
};
고차 함수 예시
위 예시는 재미를 위한 예시이고, 다음 예시는 실제 적용을 위한 예시입니다.
추가 = 함수(a,b){
b를 돌려주세요;
};
함수 수학(func,array){
Return func(array[0],array[1]);
}
console.log(math(add,[1,2]));
> 수학(추가,[1,2])
<3
위의 예에서 전달된 add는 매개변수이고, 반환되면 이는 단지 함수일 뿐입니다. 예를 들어 jQuery에는
에 대한 함수가 있습니다.
// 대시를 CSS 및 데이터 모듈에서 사용하는 camelCase로 변환합니다
// Microsoft는 공급업체 접두사(#9572)를 생략하는 것을 잊었습니다.
camelCase: 함수( 문자열 ) {
반환 문자열.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},
이런 식으로 사용되기도 하는데, 이는 JS를 잘 익히는 데 고차 기능이 얼마나 중요한지를 보여줍니다. .