首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用闭包拥有私有变量

如何使用闭包拥有私有变量
EN

Stack Overflow用户
提问于 2016-06-22 19:36:34
回答 1查看 42关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2016-06-22 19:39:50

它只是声明从外部作用域无法访问的变量:

代码语言:javascript
复制
   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封装。

代码语言:javascript
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37966871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档