Два набора скобок после вызова функции
Я смотрел, как фильтры работают в 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), вы можете сделать это так, как мы делали ранее. Что также повышает производительность и читабельность