Два набора скобок после вызова функции

Я смотрел, как фильтры работают в Angularjs, и я увидел, что нам нужно отправить 2 набора скобок.

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

Что это значит и как мы справляемся с этим с помощью JavaScript?

4 ответа

Решение

Это означает, что первая функция ($filter) возвращает другую функцию, а затем эта возвращаемая функция вызывается немедленно. Например:

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

var addTwo = add(2);

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

$filter('number') возвращает функцию, которая принимает два аргумента, первый из которых является обязательным (число), а второй необязательным (размер дроби).

Можно сразу вызвать возвращенную функцию:

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

В качестве альтернативы, вы можете сохранить возвращенную функцию для будущего использования:

var numberFilter = $filter('number');

numberFilter('123')

Это так же, как это:

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

$filter() Функция возвращает указатель на другую функцию.

с ES6 или более поздними версиями вы можете сделать это таким образом;

      const divideBoth = (x) => (y) => {
   return x / y;
};

одна из причин, по которой этот тип функции полезен, заключается в том, что у вас есть компонент react.js, которому нужна функция обратного вызова, а не встроенный способ (то есть ()=>return value), вы можете сделать это так, как мы делали ранее. Что также повышает производительность и читабельность

Другие вопросы по тегам