javaScript中的作用域(Scope)指的是变量、函数等标识符在程序中可以被访问到的区域。
闭包 是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。
闭包的三个特性:
1.函数嵌套函数
2.函数内部可以引用外部的参数和变量
3.参数和变量不会被垃圾回收机制回收
闭包应用
function counter() {
var count = 0;
return {
increment: function(val) {
count++;
},
decrement: function() {
count--;
},
getCount: function() {
return count;
}
};
}
var myCounter = counter();
myCounter.increment();
myCounter.increment(5);
console.log(myCounter.getCount());
在这个示例中,counter函数返回一个包含三个方法的对象。这些方法可以操作私有变量count,但无法从外部直接访问。