Javascript 函数调用后的两组括号

Javascript 函数调用后的两组括号,javascript,angularjs,Javascript,Angularjs,我在看Angularjs是如何工作的,我看到我们需要发送两组括号 $filter('number')(number[, fractionSize]) 这意味着什么?我们如何用JavaScript处理它 这意味着第一个函数($filter)返回另一个函数,然后立即调用返回的函数。例如: function add(x){ return function(y){ return x + y; }; } var addTwo = add(2); addTwo(4) === 6; //

我在看Angularjs是如何工作的,我看到我们需要发送两组括号

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

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

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

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')

就我个人而言,我觉得这种语法令人困惑/难以理解。但您可以使用更简单的语法访问AngularJS过滤器,如下所述:我以AngularJS为例。如果我自己创建一个函数,我想知道如何处理这个问题。实际上它叫做“currying”。一种编程技术。使用ES6 arrow函数,您可以按以下方式编写:
let add=(x)=>(y)=>x+y
称我为Noob,但请抽出时间解释一下,每次在Javascript中调用函数时,创建新的执行上下文时,子函数如何能够保持
x
@VikasBansal的值,只要其中有对另一个函数的引用,执行上下文就会留在内存中。为什么不传递两个参数,比如
add(x,y)
?这样称呼它有什么好处?谢谢你的解释!确实帮助我了解了passportjs身份验证的工作原理:
passport.authenticate(“local”)(req,res,function(){
this;看起来很复杂:export const toursListQuery=gql`query toursListQuery{tours{id name}}}`;export default graphql(toursListQuery,{options:{pollInterval:10000},})(ToursList);