`
wfdoublext
  • 浏览: 127040 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

闭包小例

阅读更多

//A是一个普通的函数  
function A(a)  
{   
    return a;  

//B是一个带函数返回值的函数  
function B(b)  
{   
    return function (c)
    {    
        return b+c; 
    }  
}  

var x = A(10);  

var y = B(20);   

var z = B(30);   

alert(x);      //得到10  
alert(y(50));  //得到70  
alert(z(100)); //得到130
[2008/12/16 12:01:20] 李伝涛 说: Code
var a=[-1,-2,-3,5,6,-1];
function f(s,e)
{
    var ret=[];
    for(var i in s)
    {
        ret.push(e(s[i]));
    }
    return ret;
}
var b=f(a,function(n){return n>0?n:0});
alert(b);

//result:
//0,0,0,5,6,0
[2008/12/16 12:01:45] 李伝涛 说: //这是一个计算x+y的函数,但是它和常规函数的不同之处在于 
//它是被Currying的 
function add(x, y) 
{  
    //当x,y都有值得时候,计算并返回x+y的值  
    if(x!=null && y!=null) return x + y;  
    //否则,若x有值y没有值 
    else if(x!=null && y==null) return function(y) 
    {  
        //返回一个等待y参数进行后续计算的闭包  
        return x + y; 
    } 
    //若x没有值y有值 
    else if(x==null && y!=null) return function(x) 
    {  
        //返回一个等待x参数进行后续计算的闭包     
        return x + y; 
    } 

//计算add(3,4)的值,得到3+4的结果7 
var a = add(3, 4); 
//计算add(2)的值,得到一个相当于求2+y的函数 
var b = add(2); 
//继续传入y的值10,得到2+10的结果12 
var c = b(10);
[2008/12/16 12:02:06] 李伝涛 说: function makefunc(x)
{
    return function(){return x;}
}
var a = [makefunc(0),makefunc(1),makefunc(2)];
alert(a[0]());
//result 0
alert(typeof(a[0]));
//result function
alert(a[0]);
//result function(){return x;}

 

var y = "global";
function constructFunction() {
    var y = "local";
    return new Function("return y");  // Does not capture the local scope!
}
// This line displays "global" because the function returned by the
// Function() constructor does not use the local scope. Had a function
// literal been used instead, this line would have displayed "local".
alert(constructFunction()());  // Displays "global"
[2008/12/16 12:02:41] 李伝涛 说: 科里化:
//这是一个计算x+y的函数,但是它和常规函数的不同之处在于 
//它是被Currying的 
function add(x, y) 
{  
    //当x,y都有值得时候,计算并返回x+y的值  
    if(x!=null && y!=null) return x + y;  
    //否则,若x有值y没有值 
    else if(x!=null && y==null) return function(y) 
    {  
        //返回一个等待y参数进行后续计算的闭包  
        return x + y; 
    } 
    //若x没有值y有值 
    else if(x==null && y!=null) return function(x) 
    {  
        //返回一个等待x参数进行后续计算的闭包     
        return x + y; 
    } 

//计算add(3,4)的值,得到3+4的结果7 
var a = add(3, 4); 
//计算add(2)的值,得到一个相当于求2+y的函数 
var b = add(2); 
//继续传入y的值10,得到2+10的结果12 
var c = b(10);

分享到:
评论

相关推荐

    闭包和候选码求解.ppt

    闭包和候选码求解 在关系数据库中,闭包和候选码是两个重要的概念。闭包是指在函数依赖关系中,一个属性集合的所有可能的函数依赖关系,而候选码是指一个关系模式中,能够唯一确定其他所有属性的属性集合。本文将...

    JavaScript闭包的简单应用

    闭包定义 在JavaScript中,当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。简单说,闭包就是能够读取其他函数内部变量的函数。 闭包的作用: 1. 可以读取函数内部的变量 2. 让这些变量的值始终保持...

    JavaScript基础篇(6)之函数表达式闭包

    其实js支持函数闭包的主要原因是因为js需要函数能够保存数据。这里的保存数据是只函数在运行结束以后函数内变量的值也会进行保存。至于为什么js需要在函数内可以保存数据,那就是js是一种函数式语言。...例1: s

    python中的闭包用法实例详解

    本文实例讲述了python中的闭包用法。分享给大家供大家参考。具体分析如下: 什么是闭包?...看概念总是让人摸不着头脑,看几个python小例子就会了 例1 def make_adder(addend): def adder(augend): ret

    JavaScript闭包与作用域链实例分析

    本文实例讲述了JavaScript闭包与作用域链。分享给大家供大家参考,具体如下: 闭包定义 ...下面我们仍然以createComparisonFunction为例进行闭包的分析。 //step1: define createComparisonFunction fun

    Python中的闭包和装饰器

    例 一. 闭包 1.闭包概念 1.1 python的命名空间 python命名空间就是作用域表现的原因,这里我简要说明一下。 引入命名空间的主要原因还是为了避免变量冲突,因为python中的模块众多,模块中又有函数,类等,它们都...

    小白实操-Swift基础学习案例源代码工程案例(超详细).zip

    02-闭包表达式和闭包 03-对象 04-继承 05-协议 06-Error 07-泛型 08-扩展案例 09-访问权限案例 10-高级运算符 11-字面量协议和模式匹配室例 12-内存管理室例 13-指针案例 14-0C和Swift混编 15-多线程案例 16-...

    ActionScript开发技术大全

    7.2.2秒表示例 146 7.3小结 149 第8章ActionScript3.0异常处理 150 8.1ActionScript3.0异常 150 8.1.1异常概述 150 8.1.2异常分类 150 8.2ActionScript3.0调试方法 152 8.2.1FlashPlayer的调试版本 152 8.2.2在Flash...

    学习javascript的闭包,原型,和匿名函数之旅

    本文通过示例给大家介绍javascript的闭包,原型,和匿名函数,具体详情请看下文。 一 .>关于闭包 理解闭包 需要的知识 1.变量的作用域 例1: var n =99; //建立函数外的全局变量 function readA(){ alert(n&#41...

    JavaScript 高级篇之闭包、模拟类,继承(五)

    一、javascript中的闭包 1、我们一起先来理解什么是函数的作用域。 2、调用的对象 结合例子: 代码如下: function display(something) { function executeDisplay1() { ...例一、 代码如下: var obj = {};//全局的对

    js实现序号递增,嵌入到可执行的html,并给出注释

    在本例中,我们使用了一个自执行的匿名函数来创建一个闭包,将计数器count定义在该闭包中。 在HTML代码中,我们创建了一个div元素,并将它的id设置为"counter"。在JavaScript代码中,我们首先通过document....

    举例讲解Go语言中函数的闭包使用

    Go里有函数类型的变量,这样,虽然不能在一个函数里直接声明另一个函数,但是可以在一个函数中声明一个函数类型的变量,此时的函数称为闭包(closure)。 例: 代码如下: packagemain   import”fmt”   funcmain...

    通过示例彻底搞懂js闭包

    例1 function sayHello(name) { var text = 'Hello ' + name; var sayAlert = function() { console.log(text); } sayAlert(); } sayHello("Bob") // 输出"Hello Bob" 在sayHello()函数中定义并调用了...

    python笔记2:闭包

    #以y=kx+b为例,计算一条线上多个点:给x得y #法1 不能重用 k=1 b=2 y=k*x+b #法2同线多点时,k b不能保存 def line_2(k,b,x):  print(k*x+b) line_2(1,2,0) #希望不会随着函数的调用而结束 #法3 全局变量 ...

    cz-add#iOS_maker#Swift进阶之路(一)——单例模式、属性传值、代理传值、闭包传值1

    1. 单例必须是唯一的(要不怎么叫单例 2. 为保证单例的唯一性,单例类的初始化方法必须是私有的 3. 考虑到规则1,为保证在整个程序的生命周期中值有一个实例被

    算法相关的C语言源代码,175个打包下载.rar

    175个与算法有关的C语言源码,经典经典啊,还有一些计算代码,比如求两数的最大公约数、素数的求法、判断longint范围内的数是否为素数(包含求...此边加入最小生成树、计算图的传递闭包、无向图的连通分量、拓扑排序...

    178个与算法有关的C语言源码

    若不形成回路则将此边加入最小生成树、计算图的传递闭包、无向图的连通分量、拓扑排序,找入度为0的点,删去与其相连的所有边,不断重复这一过程,例寻找一数列,其中任意连续p项之和为正,任意q 项之和为负,若不...

    疯狂早茶基础篇《二》:回调函数,匿名函数,闭包

    回调函数 回调函数,对于初入编程这一行的同学可能会有些难以理解,毕竟回调函数的使用和程序顺序执行的直观流程是相悖的。 想象你定了一个外卖,一种是你定时去查看外卖有...以上面的 win32程序为例。我们知道出于安全

    基于不动点算法和K2(m)剖分的遗传算法的改进

    针对n维闭包腔函数优化问题,把单纯形自映射不动点算法与遗传算法结合进行求解。首先将解空间利用同胚映射转化为n维标准单纯形,然后对n维标准单纯形进行K2(m)剖分和相应的整数标号得到个体的承载单纯形顶点的标号信息...

Global site tag (gtag.js) - Google Analytics