函数调用后的两组括号

IT技术 javascript angularjs
2021-01-27 03:22:11

我正在研究过滤器在 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
使用 ES6 箭头函数,你可以这样写: let add = (x) => (y) => x + y;
2021-03-21 03:22:11
@VikasBansal 每次在 Javascript 中调用一个函数时,都会创建一个新的执行上下文,只要其中有对另一个函数的引用,该执行上下文就会保留在内存中。
2021-03-21 03:22:11
为什么不只传递 2 个参数,例如add(x, y)像这样称呼它的好处在哪里?
2021-03-24 03:22:11
谢谢你的解释!真的帮助我了解了passportjs身份验证的工作原理:passport.authenticate("local")(req, res, function(){
2021-03-29 03:22:11
叫我菜鸟,但请花时间解释子功能如何能够保持value x
2021-04-10 03:22:11

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

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

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

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

var numberFilter = $filter('number');

numberFilter('123')
这; 看起来很复杂:export const toursListQuery = gql` query ToursListQuery { tours { id name } } `; 导出默认 graphql(toursListQuery, { options: { pollInterval: 10000 }, })(ToursList);
2021-03-31 03:22:11

它与此相同:

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

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

使用 ES6 或更高版本,您可以这样做;

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

使这种函数类型有用的原因之一是,当您有一个需要回调函数的 react.js 组件而不是内联方式(即()=>return value)时,您可以按照我们以前的方式进行。这也有利于性能和可读性