闭包1
每次执行ff()的时候实际上执行的是f1内部的函数
闭包2
闭包3
function f1(){
for(var i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i);
}, 1000)
}
}
f1();
打印出10个10
对于闭包3如果要想改造一下输出0到9,以下两种是可行的
1.内部改造成立即执行函数
function f1(){
for(var i = 0; i < 10; i++) {
(function(num){setTimeout(function() {
console.log(num);
}, 1000)})(i);
}
}
f1();
打印出0到9
2.对于for里面的var改成let,闭包本身是那个变量占用内存不释放的,如果用块级作用域可以解决