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