闭包的问题

<!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