首页 / JAVASCRIPT / JS中闭包的含义
JS中闭包的含义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JS中闭包的含义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1351字,纯文字阅读大概需要2分钟。
内容图文
![JS中闭包的含义](/upload/InfoBanner/zyjiaocheng/299/a4ad1ab561de4eff8bd4327eb2d85143.jpg)
闭包(Closure)
闭包是指有权访问另一个函数作用域中的变量的函数。
如何创建闭包
最常见的就是在一个函数内部创建另外一个函数。以TrialFunction()函数为例:
function TrialFunction(property) { return function(a, b) { var a1 = a[property]; var b1 = b[property]; if (a1 < b1) { return -1; } else if (a1 > b1) { return 1; } else { return 0; } }; }
上述代码中,内部函数访问了外部函数中的变量property。即使这个内部函数被返回了,而且在其他地方被调用了,它人仍然可以访问property变量。
这种情况是因为,这个内部函数的作用域链包含了TrialFunction的作用域。
当某个函数被调用时,会创建一个执行环境(Execution Context)及相应的作用域链。随后,使用arguments和其他命名参数的值来初始化函数的活动对象(Activity Object)。但在作用域链中,外部函数的活动对象始终处于第二位,外部函数的外部函数的活动对象处于第三位,最后直至作为作用域链的全局执行环境。
在函数执行过程中,为读取和写入变量的值,就需要在作用域链中查找变量。
作用域链的这种机制导致了一个副作用,那就是闭包只能取得包含函数中任何变量的最后一个值。
例如:
function example() { var result = new Array(); for (var i = 0; i < 10; i++) { result[i] = function() { return i; } } return result; }
这个函数会返回一个数组,一般大家会认为,每个函数都应该返回自己的index,即[0, 1, 2, ……9];但是实际上每个函数都返回的是10。
以上就是JS中闭包的含义的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的JS中闭包的含义全部内容,希望文章能够帮你解决JS中闭包的含义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。