함수 호출 후 두 세트의 괄호


168

Angularjs에서 필터가 작동 하는 방식을 찾고 있었고 2 세트의 괄호를 보내야한다는 것을 알았습니다.

$filter('number')(number[, fractionSize])

그 의미는 무엇이며 JavaScript로 어떻게 처리합니까?


7
개인적 으로이 구문은 혼란스럽고 어색합니다. 그러나 간단한 구문을 사용하여 여기에 설명 된대로 AngularJS 필터에 액세스 할 수 있습니다. stackoverflow.com/a/14303362/1418796
pkozlowski.opensource

나는 angularjs를 모범으로 삼았습니다. 함수를 직접 만들면이를 처리하는 방법을 알고 싶었습니다.
L105

4
실제로는 "커링"이라고합니다. 프로그래밍 기술.
Sajuuk

답변:


331

첫 번째 함수 ( $filter)가 다른 함수를 반환 한 다음 반환 된 함수가 즉시 호출 됨을 의미 합니다. 예를 들어 :

function add(x){
  return function(y){
    return x + y;
  };
}

var addTwo = add(2);

addTwo(4) === 6; // true
add(3)(4) === 7; // true

14
ES6 화살표 기능을 사용하면 다음과 같이 작성할 수 있습니다.let add = (x) => (y) => x + y;
guido

2
멍청한 놈이라고 부르십시오. 그러나 하위 기능이 어떻게 가치를 유지할 수 있는지 설명 할 시간을 x
내십시오.

2
@VikasBansal Javascript에서 함수를 호출 할 때마다 실행 컨텍스트가 메모리에 남아있는 다른 함수에 대한 참조가있는 한 새 실행 컨텍스트가 작성됩니다.
Paul

11
왜 두 개의 인수를 전달하지 add(x, y)않습니까? 그렇게 부르는 것의 이점은 어디에 있습니까?
Piotr Pawlik

1
이 설명에 감사드립니다! 정말 방법 passportjs 인증 작품을 이해하는 나에게 도움이 :passport.authenticate("local")(req, res, function(){
tidydee

22

$filter('number') 첫 번째는 필수 (숫자)이고 두 번째는 선택적 (분수) 인 두 개의 인수를 허용하는 함수를 반환합니다.

반환 된 함수를 즉시 호출 할 수 있습니다.

$filter('number')('123')

또는 나중에 사용하기 위해 반환 된 함수를 유지할 수 있습니다.

var numberFilter = $filter('number');

numberFilter('123')

이; 복잡해 보입니다 : export const toursListQuery = gql` query ToursListQuery {tours {id name}}`; 기본 그래프 내보내기 (toursListQuery, {옵션 : {pollInterval : 10000},}) (ToursList);
stackdave

7

다음과 같습니다 :

var func = $filter('number');
func(number[, fractionSize]);

$filter()함수는 다른 함수에 대한 포인터를 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.