函数调用后的两组括号

L10*_*105 151 javascript angularjs

我正在研究过滤器在Angularjs中是如何工作的,我看到我们需要发送2组括号.

$filter('number')(number[, fractionSize])
Run Code Online (Sandbox Code Playgroud)

它意味着什么,我们如何使用JavaScript处理它?

Pau*_*aul 305

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

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

var addTwo = add(2);

addTwo(4) === 6; // true
add(3)(4) === 7; // true
Run Code Online (Sandbox Code Playgroud)

  • 使用ES6箭头函数,您可以通过以下方式编写它:`let add =(x)=>(y)=> x + y;` (11认同)
  • 为什么不直接传递2个参数,如`add(x,y)`?这样称呼它的好处在哪里? (9认同)
  • 叫我一个菜鸟,但请你花时间解释子功能如何能够保持'x`的值 (2认同)
  • @VikasBansal每次在Javascript中调用函数时,都会创建一个新的执行上下文,只要有一个对其中的另一个函数的引用,执行上下文将保留在内存中. (2认同)
  • 谢谢你的解释!真的帮助我了解了passportjs身份验证的工作原理:`passport.authenticate("local")(req, res, function(){` (2认同)

Ja͢*_*͢ck 21

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

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

$filter('number')('123')
Run Code Online (Sandbox Code Playgroud)

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

var numberFilter = $filter('number');

numberFilter('123')
Run Code Online (Sandbox Code Playgroud)


Bry*_*ley 7

它与此相同:

var func = $filter('number');
func(number[, fractionSize]);
Run Code Online (Sandbox Code Playgroud)

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