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