<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
var arr = [];
for(var i=0;i<10;i++){
arr[i] = function() {
return i;
}
}
// console.log(arr[1]());10
for(var j=0;j<10;j++){
console.log(arr[j]());
}//由于闭包,输出10个10
//注意:
for(var i=0;i<10;i++){
console.log(arr[i]());//输出0-9
}
//解决方法:
//1.let
for(let i=0;i<10;i++){
arr[i] = function(){
return i;
}
}
for(var j=0;j<10;j++){
console.log(arr[j]());
}//输出0-9
//2.立即执行函数
for(var i=0;i<10;i++){
arr[i] = (function(num){
return function(){
return num;
}
})(i);
}
for(var j=0;j<10;j++){
console.log(arr[j]());
}//0-9
</script>
</body>
</html>
闭包的问题
猜你喜欢
转载自blog.csdn.net/hahahahahahahaha__1/article/details/80993569
今日推荐
周排行