1.闭包问题(闭包的值会存储在内存中,大量使用闭包会导致内存的泄露 一般不会使用,只有在js版本库封装的时候才会使用)
2.局部变量作用范围只是当前作用域内 全局变量是整个js作用范围,整个项目文件都可以访问
3.闭包就是取别的函数内部变量,函数没有被释放,整条作用链上的局部变量会被保留
4.其他函数里使用另一个的局部变量:
(1)在这个函数里面直接调用另一个函数(另一个函数必须将局部变量返回)
function num(){
var num=10;
return num;
}
function show(){
var n=num();
console.log(n);
}
show();
(2)把这个函数直接放在另一个函数里面
f1();
function f1(){
var n = 999;
f2();
function f2(){
console.log(n); //999
}
}
5.事件闭包解决方案:
(1)
for(var i=0;i<btnc.length;i++){
btnc[i].index=i;
btnc[i].onclick=function(){
console.log(this.index);
}
(2)
for(var i=0;i<btnc.length;i++){
(function(e){
btnc[i].onclick=function(){console.log(e);}
})(i);
}
6.变量名; 如果变量没有加关键字,所以指的是全局变量
7.在定义变量的时候尽量使用局部变量,因为全局变量只有当浏览器关闭的时候才会释放,为了代码的优化尽量少使用全局变量