形成闭包
//函数嵌套函数
function test(){
var arr = [];
for(var i = 0; i < 10; i++){
arr[i] = function(){
document.write(i + " ");//调用再执行 渲染10个10
}
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++ ){
myArr[j]();
}
闭包作用
function test(){
var arr = [];
for(var i = 0; i < 10; i++){
(function(j){
arr[j] = function(){ //立即执行函数
document.write(j + " ");//渲染0,1,2,3,4,5,6,7,8,9
}
}(i))
}
return arr;
}
var myArr = test();
for(var j = 0; j < 10; j++ ){
myArr[j]();
}
内存泄漏
//当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露
function a() {
function b() {//b函数可以拿到a函数的所有成果
var bbb = 234;
document.write(aaa);
}
var aaa = 123;
return b;//需要(返回)保存到外边
}
var glob = 100;
var demo = a();
demo();
function test(){
var temp = 100;
function a(){
console.log(temp);
}
return a;
}
var demo = test();
demo();