函数式编程-闭包跨域开发
2015-12-16 15:29
141 查看
闭包特性:
(1)封闭性 --> 外界无法访问闭包内部的数据
(2)持久性 --> 对于一般函数,在调用完毕之后,系统会自动注销函数。
对于闭包函数,在外部系统被调用之后,闭包结构依然保存在系统中,闭包中的数据依然存在,从而实现对数据的持久使用。
/*函数体内定义两个变量,分别存储参数和闭包结构。闭包结构中寄存着参数值。调用函数f之后,函数结构被注销,它的局部变量也随之被注销,因此变量a中存储的参数值也随之丢失。(外部函数返回后会自动销毁,内部的结构,标识符,数据也会随之丢失)但是
变量b存储着闭包结构,因此闭包结构内部的参数没有被释放出来。在调用参数后,依然能从闭包结构中读取到参数值*/
function f(x){
var a = x ;
var b = function(){
return a;
};
a++; // 自加后,把这个值传递给对象属性a,内部函数动态保持与局部变量a的联系,同时更新自己内部调用变量的值。
return b;
}
var c = f( 5 ); // 调用外部函数,并赋值
console.log( c() ); // 调用外部函数,返回外部函数更新后的值
// 闭包函数包含以下标识符:
// 函数参数(形参变量) 、arguments属性、局部变量、内部函数名、this(指闭包函数自身)
// this --> 局部变量 --> 形参 --> arguments --> 函数名
(1)封闭性 --> 外界无法访问闭包内部的数据
(2)持久性 --> 对于一般函数,在调用完毕之后,系统会自动注销函数。
对于闭包函数,在外部系统被调用之后,闭包结构依然保存在系统中,闭包中的数据依然存在,从而实现对数据的持久使用。
/*函数体内定义两个变量,分别存储参数和闭包结构。闭包结构中寄存着参数值。调用函数f之后,函数结构被注销,它的局部变量也随之被注销,因此变量a中存储的参数值也随之丢失。(外部函数返回后会自动销毁,内部的结构,标识符,数据也会随之丢失)但是
变量b存储着闭包结构,因此闭包结构内部的参数没有被释放出来。在调用参数后,依然能从闭包结构中读取到参数值*/
function f(x){
var a = x ;
var b = function(){
return a;
};
a++; // 自加后,把这个值传递给对象属性a,内部函数动态保持与局部变量a的联系,同时更新自己内部调用变量的值。
return b;
}
var c = f( 5 ); // 调用外部函数,并赋值
console.log( c() ); // 调用外部函数,返回外部函数更新后的值
// 闭包函数包含以下标识符:
// 函数参数(形参变量) 、arguments属性、局部变量、内部函数名、this(指闭包函数自身)
// this --> 局部变量 --> 形参 --> arguments --> 函数名
相关文章推荐
- C语言 枚举与循环体
- Myeclipse6.5频繁自动弹出,错误:JVM terminated. Exit code=1
- Spring_IOC配置与应用学习笔记
- Power Of Two leetcode java
- Spring Boot 开启AOP的方法
- springMVC中使用dubbo注解配置的问题
- Spring AOP 注解方式实现的一些“坑”
- mysql属性与java类型对照表
- 关于java I/O流学习笔记
- Java动态代理(JDK和cglib)
- 关于SpringBoot bean无法注入的问题(与文件包位置有关)
- Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码
- 最常用的 Eclipse 快捷键总结
- JAVA设计模式之:策略模式
- Streaming(C++)实现WordCount
- PHP函数小汇总(一)[个人笔记]
- Spring MVC @JsonView使用详解
- 八叉树图像处理的java简单实现
- NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
- 零基础入门学习Python(12):lambda表达式、filter()和map()