<script type="text/javascript">
//什么是闭包:
//是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。
//这些外部执行域的非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(深连结)。
//简单来说,闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),
//而这些键值对是不会随上一级函数的执行完成而销毁。
//周爱民说得更清楚,
// 闭包就是“属性表”,
// 闭包就是一个数据块,
// 闭包就是一个存放着“Name=Value”的对照表。
// 就这么简单。但是,必须强调,闭包是一个运行期概念。 with (obj) {
//这里是对象闭包
}
(function () {
//函数闭包
})()
try {
//...
} catch (e) {
//catch闭包 但IE里不行
} function User(properties) {
var _self = this;
for (var i in properties) {
(function () {
//在闭包内,t每次都是新的,而properties[i]是for里面的
var t = properties[i];
_self["get" + i.toLocaleLowerCase()] = function () {
return t;
}
_self["set" + i.toLocaleLowerCase()] = function (val) {
t = val;
}
})();
}
} var a = (function (n) {
debugger;
if (n < 1) {
alert("invalid arguments");
return 0;
}
if (n == 1) {
return 1;
}
else {
return (n * arguments.callee(n - 1));
}
})(4); document.writeln(a); var user1 = new User({
name: "张三",
age: 22
}); alert(user1.getname());
alert(user1.getage()); user1.setname("李四");
user1.setage(25); alert(user1.getname());
alert(user1.getage());
</script>

javascript闭包

其中经典闭包函数:

var fun=function(e){
      console.log("步骤1:"+e)
      fun=function(){
      console.log("步骤2:"+e)
           return e;    
      }
      return fun();
}

<input type="button" onclick="alert(fun(1))" value="按钮1"/>
<input type="button" onclick="alert(fun(2))" value="按钮2"/>
<input type="button" onclick="alert(fun(3))" value="按钮3"/>

最新文章

  1. Node.js 事件循环
  2. C# 字符串操作类
  3. SQLProfiler_SQL抓包
  4. mysql避免重复插入的三种方法
  5. [Java 基础] 使用java.util.zip包压缩和解压缩文件
  6. Salesforce.com Object Query Language (SOQL) 示例
  7. Chrome扩展开发之三——Chrome扩展中的数据本地存储和下载
  8. 免费的在线Web文件管理器:Net2FTP,Pydio,eXtplorer,KodExplorer–功能强大
  9. ASP.Net定时任务执行
  10. DestroyWindow
  11. 根据ClassName获取元素节点
  12. js 条件判断放大字体
  13. MongoDB启动客户端和服务端
  14. oracle创建删除表空间
  15. Java基础&amp;面向对象(二)
  16. [转]kaldi特征和模型空间转换
  17. Kafka项目实战-用户日志上报实时统计之编码实践
  18. 游戏AI技术 2
  19. VS2013中的快捷键大全
  20. ClickOnce 发布WinForm应用程序(非签名方式)

热门文章

  1. js 的 提交
  2. Performance Optimization (2)
  3. mac下的改装人生——关于机械键盘
  4. 关于响应事件中的Sender
  5. HDU2037 今年暑假不AC 贪心算法
  6. python 3 处理HTTP 请求的包
  7. poj 3620 Avoid The Lakes【简单dfs】
  8. Eclipse 为jar包加入 Java Source和Javadoc(如何向Eclipse中导入源码和doc)
  9. 使用JavaScript扫描端口
  10. maven 私服 配置 转