函数调用后的两组括号

我正在查看过滤器在AngularJS中是如何工作的,我发现我们需要发送2组括号。

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

它是什么意思?我们如何用JavaScript处理它?

64212 次浏览

这意味着第一个函数(__abc0)返回另一个函数,然后立即调用返回的函数。例如:

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


var addTwo = add(2);


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

与此相同:

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

$filter()函数返回指向另一个函数的指针。

$filter('number')返回接受两个参数的函数,第一个参数是必需的(数字),第二个参数是可选的(分数大小)。

可以立即调用返回的函数:

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

或者,您可以保留返回的函数以供将来使用:

var numberFilter = $filter('number');


numberFilter('123')

对于ES6或更高版本,您可以这样做。

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

这个函数类型有用的原因之一是,当你有一个React.JS组件需要回调函数而不是以内联方式(()=>;返回值)时,你可以像我们之前那样做。但不建议在事件回调中使用,因为它在第一个呈现中执行,有时可能会导致问题。