在这个例子中,第二个pf括号在foo()()中做了什么?
function foo() {
var bar = "bar";
return function (){
console.log(bar);
};
}
function bam() {
foo()(); // <--------------
}
bam ();
我试图了解关于我遇到这个例子的闭包,其中使用了()()让我困惑!
答案 0 :(得分:0)
第二组括号在
foo()()
中做了什么?
第一个括号是调用foo
函数。第二组括号调用foo
返回的匿名函数。
换句话说,第二组括号调用以下匿名函数:
function() {
console.log(bar);
}
函数foo
返回基本上是这样评估的:
function bam() {
(function() {
console.log("bar");
})();
}
答案 1 :(得分:0)
如您所见,函数foo
返回一个函数:
function foo() {
var bar = "bar";
return function () { // here
console.log(bar);
};
}
因此,当您致电foo()
时,它会返回一个函数,您可以使用foo()()