`

函数式编程(3)

 
阅读更多

 一. 闭包:理解(1):就是一个函数,捕获作用域内的外部绑定(例如:不是自己的参数)。这些绑定是为之后使用(即使在该作用域已结束)而定义的。(不用var的变量是全局变量)

              理解(2):闭包就是能够读取其他函数内部变量的函数(定义在一个函数内部的函数)。

  (1)变量的作用域有两种:全局变量和局部变量;

由于在函数内部可以读取外面的全局变量,而外部的全局变量,不能读取内部的局部变量,所以就需要方法来实现。

例如:

function f1(){
   var n=999;
    return function f2(){
      return n;
    }
  }
  var result=f1();
// 999
由于要在外面得到发f1()里面的变量n,能从内部实现闭包进行得到。所以f2()就是上面说的闭包。 

  (2)闭包的用途:1、可以读取函数内的变量。2、就是让这些变量始终保存在内存中。

例如:

function f1(){
    var n=999;
    nAdd=function(){n+=1}
    return function f2(){
      console.log(n);
    }
  }
  var result=f1();
  result(); // 999
  nAdd();
  result(); //1000
通过这个可以看出f1()中的变量n,一直保存在内存中。不会被垃圾回收机制回收 

  (3)闭包的缺点:通过闭包使用的函数变量会一直保存在内存中,这样就会造成内存消耗很大,从而影响远行速率。所以要适当的使用闭包。

分享到:
评论

相关推荐

    函数式编程思维.pdf_函数式编程_函数式编程思维_

    函数式编程是一种编程范式,它强调将计算视为数学函数的评估,并避免可变状态和副作用。这种编程风格鼓励使用纯函数,即那些输入相同输出始终一致且不改变外部状态的函数。函数式编程有着深厚的理论基础,源于λ演算...

    javascript函数式编程

    通过阅读《JavaScript函数式编程指南》,读者可以了解到函数式编程的基本概念和实现技巧,并且会发现JavaScript作为函数式编程语言的适用性。 函数式编程指南通常会涵盖以下几个重要知识点: 一等公民的函数:在...

    Java-Java函数式编程教程

    Java函数式编程是一种编程范式,它强调使用函数作为程序的基本构建块,将计算视为函数的组合,并且尽可能避免改变状态和可变数据。在Java 8及更高版本中,函数式编程得到了官方的大力支持,引入了Lambda表达式、...

    用C++进行函数式编程

    ### 用C++进行函数式编程 #### 引言 函数式编程作为一种编程范式,在软件工程领域中引起了广泛的关注。这种编程方式强调程序运算结果的确定性和不变性,能够帮助开发者更好地理解和管理代码的状态变化,尤其是在...

    函数式编程中文版.pdf

    函数式编程是一种以数学函数为基本计算单元的编程范式。在函数式编程中,函数是第一类公民,意味着函数可以被当做参数传递给其他函数、作为其他函数的返回值以及赋值给变量。这种编程范式强调的是无副作用、不变性和...

    JavaScript函数式编程.pdf

    不过,由于【标题】中提供了文档的名称——"JavaScript函数式编程.pdf",我可以根据这个名称扩展出关于JavaScript函数式编程的知识点。 JavaScript函数式编程的知识点非常丰富,涉及很多方面的内容,下面将详细介绍...

    Scala函数式编程

    函数式编程(FP)是一种软件开发风格,它注重不依赖于编程状态的... 3 在做习题的过程中,尤其是在做类型推导的过程中,对原来oop,命令式编程向函数式编程转变有很大作用;而且简洁的语法,确实让人有享受编程的感觉。

    java8函数式编程(csdn)————程序.pdf

    Java 8 函数式编程 Java 8 函数式编程是指在 Java 8 中引入的一种新的编程范式,它强加了额外的约束,即所有数据必须是不可变的,设置一次,永不改变。函数式编程将值传递给函数,该函数然后生成新值但从不修改...

    JS 函数式编程指南 PDF

    在本篇知识分享中,我们将聚焦于函数式编程这一范式,并以JavaScript语言作为教学和实践的媒介。首先,我们需要理解函数式编程的概念及其重要性。函数式编程是一种编程范式,它强调使用函数来表达计算逻辑,其中函数...

    Python函数式编程(第2版)1

    《Python函数式编程(第2版)》是一本面向Python开发者深入探讨函数式编程的书籍。函数式编程是一种编程范式,它强调使用函数作为基本的构建块,以减少副作用和状态变化,从而提高代码的可读性和可维护性。Python虽...

    函数式编程中的Swift与Swift中的函数式编程

    在介绍“函数式编程中的Swift与Swift中的函数式编程”这一主题时,傅若愚首先提出了一个问题:“当我们谈论函数式编程时,我们在谈论些什么?”函数式编程是一种编程范式,它将计算视为数学函数的评估,并避免改变...

    Java 8函数式编程.pdf

    Java 8函数式编程

    Scala函数式编程.pdf

    函数式编程(FP)是一种软件开发风格,它注重不依赖于编程状态的函数。函数式代码易于测试和复用,容易实现并发,且不容易受到bug的攻击。Scala是一种能很好支持函数式编程的新兴JVM语言。《Scala函数式编程》是针对...

    javascript指南和函数式编程

    本指南将深入探讨JavaScript的高效编程和函数式编程这两个重要主题,帮助开发者提升技能,实现更优雅、更可维护的代码。 《Effective JavaScript(中文版).pdf》这本书是JavaScript编程的经典之作,它包含了68个具体...

    函数式编程另类指南

    的确,关于函数式编程的文章和论文难于理解,但他们本来不必这么晦涩。这一知识隔阂的形成完全是历史原因。函数式编程的概念本身并不困难。这篇文章可以作为“简易的函数式编程导引”。是一座从我们命令式...

    Java8 Lambdas 函数式编程百度网盘

    Java8 函数式编程百度网盘共享,Java8 函数式编程百度网盘,Java8 百度网盘,Java8 函数式编程 PDF 开源资源, Java8 Lambdas 表达式百度网盘,Java8 Lambdas 百度网盘, 象征性的给一分意思意思

    JS函数式编程指南

    ### JS函数式编程指南 #### 引言 函数式编程是一种编程范式,它强调使用纯函数和不可变数据结构来进行软件开发。本指南旨在帮助读者深入理解函数式编程的基本概念及其在JavaScript中的应用。 #### 第1章: 我们在...

Global site tag (gtag.js) - Google Analytics