JavaScript中的闭包
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaScript中的闭包,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1645字,纯文字阅读大概需要3分钟。
内容图文
JavaScript中的闭包
?介绍
在大多数常用语言中,函数返回后,所有局部变量不再可访问,因为堆栈帧已被销毁。牢记这一点,闭包可以被看作是当函数返回时不会释放的栈帧。
为什么使用闭包
我有很多人问我为什么要关闭。我会尽力解释。
我遇到过闭包的场景是使用Tabular Controls,File Objects等。使用闭包我可以存储我可以用于其他客户端功能的页面索引,行计数等。通过FSO,我可以保存文件路径,计数等以备后用。它不仅适用于复杂的客户端控件。想想你的页面有很多控件并且你正在执行客户端验证的场景。每次你通过一个控制器
document.getElementById("controlname")
正在搜索整个页面控制树。这可以通过使用闭包并保存控件一次来避免。可重用性是关闭的关键优势。希望我已经说服了几个人至少知道关闭。
使用代码
看看下面的功能:
现在我们以下面的方式调用函数:
var say2 = sayHello("Sachin");
say2();
该函数sayHello()返回一个指向该函数的指针sayAlert()。
这里,当你在另一个函数中声明一个函数时,局部变量可以在从你调用的函数返回后保持可访问。这在上面已经说明了。我们say2()
在从我们返回之后调用函数sayHello()。
请注意,我们调用的代码引用了变量text,该变量是函数的局部变量sayHello()。
考虑下面的功能:
这三个函数gAlertNumber(),gIncreaseNumber()并且gSetNumber(x)可以共享同一个闭包 - setupSomeGlobals()三个函数定义时的局部变量。
这可以通过一个接一个地调用函数来检查。
尝试下面的顺序:
如果我们setupSomeGlobals()再次调用,则会创建一个新的闭包(堆栈帧!)。老gAlertNumber,gIncreaseNumber,gSetNumber
变量被改写新的具有新功能关闭。
概要
JavaScript中的闭包就像保留所有局部变量的副本一样,就像退出函数时一样。
可能最好认为闭包总是在函数的入口处创建,并且局部变量被添加到闭包中。
每次调用具有闭包的函数时都会保留一组新的局部变量(假设函数内部包含函数声明,并且返回该函数的引用或者以某种方式为其保留外部引用)。
内容总结
以上是互联网集市为您收集整理的JavaScript中的闭包全部内容,希望文章能够帮你解决JavaScript中的闭包所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。