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
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是一个典型的闭包。
outside(3)(5)
是连续的两次函数调用。分开理解就容易多了:
第一次调用外部函数
outside
,返回值inside
就是内部函数,并且内部函数以闭包的形式捕获了变量x
。第二次调用第一次返回的内部函数
inside
,执行加法(将闭包捕获的3与参数5相加),返回值为Number类型的值8。很简单的闭包!这是一个闭包教程https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
第一次调用
fn_inside = outside(3);
由于闭包依赖原则 3这个值将会被保存在内存中不会因为调用结束而delete掉,第二次调用会直接执行内部闭包函数返回X+Y 的值也就是8