<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
div{
width: 200px;
height: 200px;
background-color: red;
float: left;
margin: 20px;
font-size: 100px;
line-height: 200px;
text-align: center;
color: white;
}
</style>
</head>
<body>
<div class="div1">1</div>
<div class="div2">2</div>
<div class="div3">3</div>
<div class="div4">4</div>
<div class="div5">5</div>
</body>
<script type="text/javascript">
var divs=document.querySelectorAll("div");
for(var i=0;i<divs.length;i++){
function click(num) {
divs[i].onclick=function () {
console.log(num);
}
}
click(i);
}
//闭包。函数内部的函数就是闭包
//1、通过闭包可以访问函数内部的局部变量
//根据闭包可以保存当时函数内部局部变量的值得特性,可以使用下面这种方式来解决点击DIV的
// 时候I始终为5这种情况
function test1 (num) {
var j=num;
console.log("1的值"+j);
function test2 () {
console.log(j);
}
return test2;
}
// var fn = test1();
// fn();
//2、每次访问tset1得到的test2是不一样的函数。
//两个test2不一样,意味着,他们的空间不是同一块内存空间。
var fn2 = test1(100);
fn2();
var fn3 = test1(200);
//fn2和fn3是两个不同的函数,里面的j虽然都是引用的test1里面的J值,但是他们都不是同一个变量
//fn2,fn3各自在自己的内部空间储存了原来的J值
fn2();
// console.log(fn2===fn3);
</script>
</html>
闭包
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 闭包介绍 Swift闭包和Objective-C中的Block很类似,是一段自包含的函数代码块,可以在代码中使用和...
- 本节知识点 闭包的基本概念 闭包基本使用 闭包表达式作为回调函数 闭包的多种写法(尾随闭包) 闭包表达式优化 闭包...
- https://github.com/codlife/SparkDeepDoc/blob/master/Spark...