闭包的初相识

手机软件开发 2024-9-27 20:33:18 21 0 来自 中国
1.什么是闭包?

内部函数可以或许返回外部函数的作用域(当内部函数返回时,它会携带一个背包,背包中是函数声明时作用域内的全部变量)
我们可以用以下代码来表述以下:
function makeFunc() {    var name = "Mozilla"    function displayName() {        alert(name);    }    return displayName;}var myFunc = makeFunc();myFunc();我们来简单的刨析下上面代码的运行流程

  • 编译阶段,变量和函数被声明,作用域即被确定。
  • 运行 makeFunc(),此时会创建makeFunc()的实验上下文,实验上下文内部储存了 makeFunc 声明的全部变量函数信息。
  • 函数 makeFunc 运行完毕,此时内部函数 displayName 在实验前被返回而且将它的引用赋值给外部的变量 myFunc,此时 myFunc 指针指向的还是 displayName,只管它位于 makeFunc 的作用域之外,它还是可以或许获取makeFunc 的内部变量。
  • myFunc 在外部被实验,displayName 内部可实验代码 alert(),向作用域里哀求 name 的变量,当地作用域没有找到,就向父级作用域中探求。
闭包的实验看起来像开辟者的一个小小的“作弊本领”,绕过作用域的监管机制,从外部也能得到内部作用域的信息。
2.闭包的用途是什么

闭包的应用,大多数是在必要维护内部变量的场景下
2.1 模拟私有属性

在编程语言中,比如 java,是支持方法声明为私有的,他们只能被同一类中其他方法所调用,而 javascript没有这种原生支持,,但我们可以利用闭包来模拟私有方法。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:21, Processed in 0.155842 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表