作用域链/闭包
作用域链
作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期
闭包
闭包作用:
- 实现公有变量、
- 可以做缓存(存储结构)、
- 可以实现封装,属性私有化、
- 模块化开发,防止污染全局变量。
影响:当内部函数被保存到外部时,将会产生闭包,闭包会导致原有作用链不释放,造成内存泄漏。
/*
* 闭包
*/
function a(){
function b(){
var bbb=234;
console.log(aaa);
}
var aaa=123;
return b;
}
var glob=100;
var demo=a();
demo();
/*
* 闭包实现累加器
*/function add() {
var num = 0;
function a() {
console.log(num++);
}
return a;
}
var myAdd = add();
myAdd();
myAdd();
myAdd();
3、私有化变量
function Wang(name, wife) {
var xwife = 'tom';
this.name = name;
this.wife = wife;
this.dvorce = function() {
this.wife = xwife;
}
this.changeXwife = function(target) {
xwife = target;
}
this.sayXwife = function() {
console.log(xwife);
}
}
var wang = new Wang('wang', 'jack');
4、不污染全局变量