闭包举例

maolixin

js的变量以作用域划分为两种:全局变量、局部变量。在函数外声明的变量为全局变量,函数内部可以直接调用全局变量。在函数内部声明变量一定要用var 命令,否则就是在函数内部声明了一个全局变量了。

闭包的产生是为了从外部读取函数的局部变量,即在函数内部再定义一个函数f2,把f2作为返回值,在上层函数中返回就可以使上层函数读取其他函数的局部变量了

function f1(){

    n=999;

    function f2(){
      alert(n);
    }

    return f2;

  }

  var result=f1();

  result(); // 999

闭包(closure)就是能够读取其他函数内部变量的函数。也可以说是定义在一个函数内部的函数,本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包的用途:1. 可以读取函数内部的变量

2. 让这些变量的值始终保持在内存中,因为f2依赖于f1的存在而存在。

缺点:函数中的变量都被保存在内存中,使内存消耗很大,所以不能滥用闭包,不然网页性能会降低,在IE中也可能会内存泄露,所以在退出函数之前,将不再使用的局部变量全部删除。

时间: 2024-11-14 03:37:10

闭包举例的相关文章

Python闭包举例

Python闭包的条件: 1.函数嵌套.在外部函数内,定义内部函数. 2.参数传递.外部函数的局部变量,作为内部函数参数. 3.返回函数.外部函数的返回值,为内部函数. 举例如下: def line_conf(a, b): def y_point(x): return a*x+b return y_point line1 = line_conf(1, 0) line2 = line_conf(2, 1) list1 = [line1(x) for x in range(10)] list2 =

傻瓜学习JavaScript闭包(译)

在<高级程序设计>中,对于闭包一直没有很好的解释,在stackoverflow上翻出了一篇很老的<JavaScript closure for dummies>(2016)~ 出处:http://stackoverflow.com/questions/111102/how-do-javascript-closures-work 闭包不是魔法 本文旨在用JavaScript代码让程序员理解闭包,函数式编程的程序员或者导师请绕行. 只要理解了闭包的核心理念,闭包并不难学.但是通过学习一

个人理解的javascript作用域链与闭包

闭包引入的前提个人理解是为从外部读取局部变量,正常情况下,这是办不到的.简单的闭包举例如下: 1 function f1(){ 2 3 n=100; 4 5 function f2(){ 6 alert(n); 7 } 8 9 return f2; 10 11 } 12 13 var result=f1(); 14 15 result(); // 100 代码中的f2函数,就是闭包. 1 function f1(){ 2 3 var n=100; 4 5 nAdd=function(){n+=1

Java 8怎么了:局部套用vs闭包

[编者按]本文作者为专注于自然语言处理多年的 Pierre-Yves Saumont,Pierre-Yves 著有30多本主讲 Java 软件开发的书籍,自2008开始供职于 Alcatel-Lucent 公司,担任软件研发工程师. 本文主要介绍了 Java 8 中的闭包与局部套用功能,由国内 ITOM 管理平台 OneAPM 编译呈现. 关于Java 8,存在着许多错误观念.譬如,认为Java 8给Java带来了闭包特性就是其中之一.这个想法是错的,因为闭包特性从Java诞生之初就已经存在了.

Python自学之函数内嵌和闭包

函数内嵌指一个函数内部包含定义另一个函数举例: >> def fun1():print('fun1()正在被调用...')def fun2():print('fun2()正在被调用...')fun2() >> fun1()fun1()正在被调用...fun2()正在被调用...>> fun2()Traceback (most recent call last):File "<pyshell#7>", line 1, in <modu

网络编程-Python高级语法-闭包

什么叫闭包?通俗来说就是函数里嵌套函数,从表现形式来看,内部函数引用外部函数的作用域里的变量,那么内部函数就称为闭包 举例说明: 1.闭包=函数块+定义函数时的环境,inner就是函数块,x就是环境 def outer(x): def innner(y): return x+y return innner a = outer(1) # 调用outer函数返回内部函数inner返回的的函数变量 print(a(2)) # 通过函数变量传参并运行内部函数,然后返回函数结果运行结果:3 2.闭包不可以

go 匿名函数和闭包

匿名函数 1. 函数也是一种类型,因此可以定义作为一个函数类型的变量 package main import "fmt" // 函数作为参数 func add(a, b int) int { return a + b } func testfunc(a, b int, fun func(int, int) int) int { sum := fun(a, b) return sum } func main() { sum := testfunc(2, 3, add) fmt.Print

python学习-42 装饰器 --- 函数闭包1

函数闭包举例: def father(name): print('hello world') def son(): print('儿子说:我的爸爸是%s' % name) def grandfson(): print('孙子说:我的爷爷是%s' % name) grandfson() son() father('小明') 运行结果: hello world 儿子说:我的爸爸是小明 孙子说:我的爷爷是小明 Process finished with exit code 0 函数的包: 就是嵌套里的

三个月从入门成为前端开发工程师系列视频教程

看到美观而设计感强的页面,怎样把它做出来?你的想法能不能变成别人眼前的现实?本课程以解决实际案例为导向,从切图开始,通过学习HTML标签与CSS设计,让你独立完成从效果图到网页的编码实现. 课程目录: 页面制作 单元(章) 课题(节) 内容 1.Photoshop切图 1.工具.面板.视图 介绍切图概念.PS软件.PS的面板+常用工具+辅助视图. 2.测量.取色 介绍并演示获取信息的方法:测量与取色 3.切图 切图及切图的各种操作:隐藏文字(独立图层和非独立图层的不同操作方法).png8和png