함수를 호출할 때 두 단계로 살펴보세요. 먼저 createComparisonFunction()传入比较的字段。在createComparisonFunction()函数内,返回一个匿名函数。同时由于匿名函数处在createComparisonFunction()内,所以你对createComparisonFunction()传入的参数propertyName对匿名函数也有效存在。 通过上一步,你已经得到的匿名函数包含propertyName,此时你就可以传入你要比较的两个对象,在函数内比较他们的propertyName 속성을 통해 비교 결과를 반환합니다.
특정 데이터 구조를 비교하기 위해 만들어진 도구 기능입니다. 예를 들어 데이터 구조 형식은 다음과 같습니다.
으아악이때 일반적인
으아악sort
메소드는 다음과 같은 형식으로 작성해야 합니다.이 코드의 문제점:
value
매개변수는 하드 코딩되어 있으므로 다른 필드를 정렬할 때 다시 코딩해야 합니다.1 / -1을 반환하는 논리는 중복되고 지루합니다.
Little Red Book 시대에는 정렬을 위해 익명 함수를 직접 작성하는 것이 충분히 가독성이 좋지 않았습니다(이제는 화살표 함수가 있으므로 실제로 큰 문제는 아닙니다).
그래서 위의 경우에 대해 Red Book의 저자는 [특정 필드 정렬] 기능을 생성하는 일반 도구 기능을 설계했습니다. 이 유틸리티 함수를 호출하면 반환되는 것은 정렬된 결과(고차 함수라고도 함)가 아니라 새 함수입니다.
이 패키지를 적용한 후의 코드는 다음과 같습니다.
으아악이것은 비즈니스 로직을 단순화합니다.
내가 이해하지 못하는 것은 두 개체의 특정 속성 크기를 비교하면
을 반환한다는 것입니다.createComparisonFunction("test")({'test': 1}, {"test": 2})
-1
함수를 호출할 때 두 단계로 살펴보세요. 먼저
createComparisonFunction()
传入比较的字段。在createComparisonFunction()
函数内,返回一个匿名函数。同时由于匿名函数处在createComparisonFunction()
内,所以你对createComparisonFunction()
传入的参数propertyName
对匿名函数也有效存在。通过上一步,你已经得到的匿名函数包含
propertyName
,此时你就可以传入你要比较的两个对象,在函数内比较他们的propertyName
속성을 통해 비교 결과를 반환합니다.이를 고차 함수라고 합니다.