js中对闭包的理解

本人丝一枚,在刚刚过去的javascript学习中,对闭包这个知识真是,听课两分钟,懵逼一整天。今天闲来没事,看了下闭包。话不多说先上代码。

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<script>
window.onload = function() {
function aa() {
var x = 10; function bb() {
alert(x++);
}
bb();
bb();
}
aa();
}
</script>
</head> <body>
</body> </html>

先把代码在编辑器里自己手敲一遍。

好了还是先看截图吧稍后再敲

命名不规范,大家将就下啊,嘿嘿。

(1) 函数aa被调用执行里面的内容。里面又有一个函数bb,也被调用。看图就知道会弹出10。

js中对闭包的理解

(2)接着函数bb再次被调用。看图可以知道数值是几了吧。

js中对闭包的理解

说了这么多到底什么是闭包那,全让看代码了。下面就给大家一个通俗易懂的定义:有权访问另一个函数作用域内的变量都是闭包。是不是很易懂。

再被别人cai,知道怎么回答了吧。

总结:

闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗,另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样。

如果还不理解可以参考http://www.codeceo.com

上一篇:[Android Tips] 30.如何在 Android Studio 中一次性格式化所有代码


下一篇:CentOS开发ASP.NET Core入门教程