我是Javascript的新手,我现在正在尝试理解它的闭包和它的用法,在经历了许多网站和w3schools之后,它说“它使得函数有”私有“变量成为可能。”http://www.w3schools.com/js/js_function_closures.asp,我试图理解它的用法,我已经找到了一些链接,但我仍然不理解它,我不明白闭包是如何实现像c++这样的私有访问的。当你讲解时,请详细讲解,因为我是初学者
发布于 2016-06-22 19:39:50
它只是声明从外部作用域无法访问的变量:
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 https://stackoverflow.com/questions/37966871
复制相似问题