function outside(x) {
function inside(y) {
return x + y;
}
return inside;
}
// Think of it like: give me a function that adds 3 to whatever you give it
fn_inside = outside(3);
result = fn_inside(5); // returns 8
result1 = outside(3)(5); // returns 8
这是一个典型的闭包。
outside(3)(5)
是连续的两次函数调用。分开理解就容易多了:
第一次调用外部函数
outside
,返回值inside
就是内部函数,并且内部函数以闭包的形式捕获了变量x
。第二次调用第一次返回的内部函数
inside
,执行加法(将闭包捕获的3与参数5相加),返回值为Number类型的值8。