闭包
将函数demo中的变量a可以全局访问,执行demo函数后,将b函数return出去并赋值给了onfn变量, b函数的作用域集合不会被 销毁,每次调用onfn()时,都能访问到demo函数中 a 变量,然而形成了闭包。
<script>
function demo(){
var a = 0;
function b(){
a++;
console.log(a);
}
return b;
}
var onfn = demo();
onfn();
onfn();
onfn();
// 多次调用 onfn() 打印 a 的结果
</script>
<script>
function add(){
var arr = [];
for(var i = 0; i < 10; i++){
arr[i] = function(){ console.log(i) }
}
return arr;
}
var myArr = add();
for(var j = 0; j < 10; j++){
myArr[j]();
}
// 测试 调用 myArr[j]() 打印的结果
</script>
<script>
//同上做对比
function add(){
var arr = [];
for(var i = 0; i < 10; i++){
(function(j){
arr[j] = function(){ console.log(j) }
}(i))
}
return arr;
}
var myArr = add();
for(var j = 0; j < 10; j++){
myArr[j]();
}
// 测试 调用 myArr[j]() 打印的结果
</script>