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