最简明的JavaScript闭包解释
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了最简明的JavaScript闭包解释,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1595字,纯文字阅读大概需要3分钟。
内容图文
最简明的JavaScript闭包解释
JavaScript是这几年最火的编程语言之一,从前端到服务器端,再到脚本,好像没有一个地方没有JavaScript的身影。这个世界上任何的一种事物的存在必然有其合理性,不要以为别人都是小人得志,学习众家的长处才能开阔视野,青出于蓝。
JavaScript的闭包是其相对于好多传统语言不太容易理解的地方,其实并不是它有多难,因为我们好多朋友都是有其他语言背景的,比如C/C++或者Java,这样往往可能会有些先入为主的思维,导致不容易一下子转变过来,其实稍微习惯一下就好了,大家都是高手,下面我们直入主题。
JavaScript闭包是什么:
简单的说就是函数套函数,JavaScript中的函数其实相当于其他语言中的对象,如果不特别说明,下面我说的函数和对象都是可以互换的, 当所有的函数都执行完了,由于内层的函数作为结果返回了,导致外层的对象仍然被引用,所以外层对象不释放,其中的变量仍然可以使用。
明白了以上的道理,下面两个例子就很容易理解了。
首先看第一段代码,这段代码的输出结果都是10,因为 createFunctions 函数执行完后 i 的值是10, createFunctions 对象中这个时候存储的i就是10, 而下面的代码每次都是输出最后的对象中的状态i = 10, 所以结果一目了然。
1 function createFunctions(){ 2 var result = new Array(); 3 4for (var i=0; i < 10; i++){ 5 result[i] = function(){ 6return i; 7 }; 8 } 910return result; 11 } 1213var funcs = createFunctions(); 1415//every function outputs 1016for (var i=0; i < funcs.length; i++){ 17 document.write(funcs[i]() + "<br />"); 18 }
执行结果:
10 10 10 10 10 10 10 10 10 10
再来看下面这段代码createFunctions 函数执行完i也是10,但是返回的函数每次都使用的自己的局部变量num,而不是外部对象createFunctions中的i=10,所以每次的输出结果为0-9.
1 function createFunctions(){ 2 var result = new Array(); 3 4for (var i=0; i < 10; i++){ 5 result[i] = function(num){ 6returnfunction(){ 7return num; 8 }; 9 }(i); 10 } 1112return result; 13 } 1415var funcs = createFunctions(); 1617//function outputs 1-918for (var i=0; i < funcs.length; i++){ 19 document.write(funcs[i]() + "<br />"); 20 }
执行结果:
0 1 2 3 4 5 6 7 8 9
总结
通过这两段代码的理解,希望大家对JavaScript闭包由一个全新的认识,JavaScript闭包是JavaScript语言的难点,也是其精髓之一,希望本文能对大家有所帮助,如果大家能有一点点的启发,本文的目的就达到了。
原文:http://www.cnblogs.com/pugang/p/4782304.html
内容总结
以上是互联网集市为您收集整理的最简明的JavaScript闭包解释全部内容,希望文章能够帮你解决最简明的JavaScript闭包解释所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。