JavaScript如何在函数返回时保存局部范围变量
正如题目所说,我不明白它是如何工作的。下面是我的简单示例:JavaScript如何在函数返回时保存局部范围变量,javascript,function,return,Javascript,Function,Return,正如题目所说,我不明白它是如何工作的。下面是我的简单示例: function bar () { var a = 0; return { baz: function () { console.log(a++); } } } var foo = bar(); foo.baz() // 0 foo.baz() // 1 foo.baz() // 2 我想当我使用“bar”函数时,它应该返回我这个对象 { baz:
function bar () {
var a = 0;
return {
baz: function () {
console.log(a++);
}
}
}
var foo = bar();
foo.baz() // 0
foo.baz() // 1
foo.baz() // 2
我想当我使用“bar”函数时,它应该返回我这个对象
{
baz: function () {
console.log(0++);
}
}
其中包含替换的变量,执行后应删除所有局部变量,但不是!变量“a”已保存并可以使用,因此我不了解它。有人能给我解释一下吗,请仔细阅读一下JavaScript闭包: 闭包是引用独立(自由)变量的函数 (本地使用但在封闭范围内定义的变量)。 换句话说,这些函数“记住”了 他们是被创造出来的 资料来源:
这将帮助您更好地理解这一点,对每个JS开发人员都非常重要。变量不会消失,只要它们仍然从某个地方引用,即使它们的包含函数返回。值得注意的是,JS中的每个函数在技术上都是一个闭包。