如何通过使用闭包来拥有私有变量

时间:2016-06-22 11:36:34

标签: javascript

我是Javascript的新手,我目前正在尝试理解它的关闭,并且在经过许多网站和w3schools之后使用它说“它使一个函数可以拥有”私有“变量。” http://www.w3schools.com/js/js_function_closures.asp,我试图理解它的用法,我找到了一些链接,但我不理解它仍然我不明白闭包如何实现像c ++这样的私有访问。当您解释时,请详细解释,因为我是初学者

1 个答案:

答案 0 :(得分:0)

它只是声明外部范围内无法访问的变量:

   function Gen() {
     var c = 0; // c is private here
     this.next = function() {return ++c;}
   }
   var gen = new Gen();
   console.log(gen.next()); // 1
   console.log(gen.next()); // 2
   console.log(gen.next()); // 3

我们无法直接获取/设置c值,我们必须使用导出的接口(next方法)。
因此,内部计数器值包含在"private"变量中。

好的,这是闭包示例,但含义相同:scope封装。

function getGenerator() {
  var c = 0;
  return function() {return ++c; }
}
var a = getGenerator();
var b = getGenerator();
console.log(a()); // 1 
console.log(a()); // 2 
console.log(b()); // 1 
console.log(a()); // 3