闭包是什么?
闭包就是
1.在函数内部声明一个函数
2.它能读取所在函数内部变量
3.再把这个函数return出来
function fn(){
var n=1;
function fb(){
}
return fb
}
var result=fn()
var fnArr = [];
for (var i = 0; i < 10; i++) {
(function(j){
fnArr[i] = function(){
console.log(j);
}
})(i)
}
console.log( fnArr[3]() ); // 输出 3
//方法二:
var fnArr = [];
for (var i = 0; i < 10; i++) {
fnArr[i] = (function(){
var j = i;
return function(){
console.log(j);
}
})()
}
console.log( fnArr[7]() ); // 输出 7
下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)
for(var i=0;i<5;i++){
setTimeout(function(){
console.log('delayer:' + i );
}, 0);
console.log(i);
}
//答案:
for(var i=0;i<5;i++){
(function (){
var j=i //把每个 i 保存在,多个独自的作用域中,调用函数时,就在自己的作用于中去找
setTimeout(function(){
console.log('delayer:' + j ); // delayer:5
}, 0);
console.log(i); // 0 1 2 3 4
})(i)
}
网友评论