前端学习 第六弹: javascript中的函数与闭包
当function里嵌套function时,内部的function可以访问外部function里的变量
function foo(x) {
var tmp = 3;
function bar(y) {
alert(x + y + (++tmp));
}
bar(10);
}
foo(2)
这时无论怎么运行输出的都是16,但这不是闭包
如果我们返回内部函数,内部function会close-over外部function的变量直到内部function结束
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + (++tmp));
}
}
var bar = foo(2); // bar 现在是一个闭包
bar(10);
这时反复运行会输出16,17,18.....
这就是一个闭包
时间: 2024-08-02 11:03:50