`

闭包学习记录

 
阅读更多
function 王老吉(){   
    var 剩余=100;   
     return function(){   
        剩余--;   
      console.log(剩余内含饮料);   
    }   
}  
var 喝王老吉=王老吉();   
喝王老吉();//剩下99   
//干别的事情   
喝王老吉()//剩下98  

 

不知道这样的例子能不能很清楚的描述成一个闭包的作用:

1、避免每次喝王老吉时,饮料都是100开始计数(用外面的术语 讲就是避免函数执行完成后被释放。)

2、如果不使用这样的写法,就得把计数器暴露在外面

代码如下

 

var 剩余=100   
function 喝王老吉(){   
      剩余--;   
}   
喝王老吉();//剩下99   
//干别的事情   
喝王老吉()//剩下98  

 

这很不合理,因为“剩余”这个变量是属于王老吉本身的。

 

在早期的面向结构编程中,数据和处理逻辑是分开的。后来人们发现这样有很多问题,就把关联的数据和处理逻辑绑定起来。如果以数据(名词)为主体,封装处理逻辑(动词),就是面向对象编程里的对象。如果以处理逻辑(动词)为主体,封装数据(名词),就是函数式编程里的闭包。

分享到:
评论

相关推荐

    JS页面获取 session 值,作用域和闭包学习笔记

    本文实例讲述了JS页面获取 session 值,作用域和闭包。分享给大家供大家参考,具体如下: Javascript获取session的值: var name= "${sessioScope.变量名}"; 注意这里面需要使用 “” 把 El 表达式给括起来,否则...

    Go 学习笔记 高清

    从更新记录来看,作者雨痕从2012年1月开始学习Go语言,并在学习过程中不断更新笔记内容,纠正错误,并添加了更多细节。这表明了Go语言的学习和笔记的编写是一个持续的过程。 总结来说,这份学习笔记为学习Go语言的...

    javascript学习笔记(十三) js闭包介绍(转)

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现

    JS学习笔记之闭包小案例分析

    本文实例讲述了JS学习笔记之闭包小案例。分享给大家供大家参考,具体如下: 直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</...

    Go语言学习笔记.pdf 共174页

    Go语言学习笔记.pdf 共174页 Go语言学习笔记.pdf 共174页是一本关于Go语言的详细学习笔记,涵盖了Go语言的基础知识、函数、数组、Maps、Structs、接口、并发、程序结构、标准库等方面的内容。本笔记共分为三大部分...

    h5前端学习笔记

    【描述】"我的h5前端学习笔记"表明这是一份个人的学习记录,可能包含了作者在探索HTML5前端开发过程中对各个方面的理解和实践总结。学习笔记通常包括了基础概念、关键特性、实用技巧以及常见问题的解决方法。 ...

    Rust学习笔记_78实用知识库分享

    7. Rust闭包:Rust学习笔记Day 23-24讲述了Rust的闭包,包括闭包的定义、闭包的使用场景、闭包的实现等。 8. Rust库和生态系统:Rust学习笔记Day 25讲述了Rust的库和生态系统,包括Rust的标准库、 THIRD-PARTY库和...

    SuperMap Objects .NET 根据距离分区域计算凸闭包多边形

    `CreateConvexHull.v11.suo`是用户配置文件,记录了开发环境的个人设置。`CreateConvexHull`可能是程序的主入口文件,`Data`目录则包含了用于演示的数据。 在实际应用中,根据距离分区域计算凸闭包多边形的方法可以...

    王纯业的Python学习笔记

    《王纯业的Python学习笔记》是一份专为Python初学者和进阶者设计的学习资料,旨在帮助读者全面掌握这门强大的编程语言。Python作为一门高级编程语言,因其简洁、易读的语法特性,被广泛应用于数据分析、机器学习、...

    Python语言学习笔记

    这份“Python语言学习笔记”是一份开源文档,最初发布在GitHub上,作者希望借助...可以看出,作者对Python有着深厚的理解和热爱,这份文档不仅记录了作者的学习经历,也为其他Python学习者提供了一份宝贵的学习资料。

    python学习笔记+源码练习

    "Python学习笔记+源码练习"是一个适合初学者的资源包,旨在帮助你从零基础开始掌握Python编程。这份资料包含了理论知识讲解和实际代码实践,使学习过程更为直观和实用。 在学习Python时,笔记是关键,它们可以帮助...

    Go语言学习笔记

    "Go语言学习笔记" Go语言学习笔记是关于Go语言基础入门篇的笔记,主要介绍Go语言基础语法、数据类型、逻辑语句等相关知识点。 语言概述 Go语言是一种开源的编程语言,能让构造简单、可靠且高效的软件变得容易。Go...

    JavaScript闭包(closure).pdf

    3. 延迟执行或记忆化:闭包可以保存函数的状态,比如在事件处理中,可以记录最后一次的操作状态。 4. 内存管理:闭包可以控制变量的生命周期,避免不必要的内存泄漏。 闭包的工作原理: 当一个函数返回另一个函数...

    JavaScript闭包原理与用法学习笔记

    本文实例讲述了JavaScript闭包原理与用法。分享给大家供大家参考,具体如下: 闭包(Closure) 闭包是一个函数和词法环境的组合,函数声明在这个词法环境中。 词法作用域: 看下面的一个例子: function init() { ...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    python基础学习笔记

    笔记中详细介绍了函数的定义、调用、参数传递、缺省参数、全局变量、局部变量、Nonlocal语句、Lambda表达式、eval()和exec()、函数式编程、高阶函数、递归函数、闭包和装饰器。模块(Module)部分讲解了如何导入和...

Global site tag (gtag.js) - Google Analytics