Javascript 带对象的闭包
我在阅读有关闭包的文章时,遇到了以下示例:Javascript 带对象的闭包,javascript,closures,Javascript,Closures,我在阅读有关闭包的文章时,遇到了以下示例: var counter = (function() { var privateCounter = 0; function changeBy(val) { privateCounter += val; } return { increment: function() { changeBy(1); } }; })(); 因此,基本上,关闭是: 闭包是捆绑在一起的函数的组合(封闭) 引用其周围的
var counter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
}
};
})();
因此,基本上,关闭是:
闭包是捆绑在一起的函数的组合(封闭)
引用其周围的状态(词汇环境)
好的,到目前为止还不错。但在下面的示例中,我们没有捆绑在一起的函数,但返回的对象保留了对privateCounter的引用
我们可以考虑这也是一种封闭吗?
var counter = (function() {
var privateCounter = { name: "nick" };
return {
name: privateCounter
};
})();
否。函数不从其外部作用域访问变量。忘记函数。我说的是返回的对象,它包含对变量的引用“在编程语言中,闭包,也称为词法闭包或函数闭包,是一种在具有一级函数的语言中实现词法范围的名称绑定的技术。从操作上讲,闭包是一种存储函数[a]和环境的记录。[1]”~Wikipedia