javascript——闭包
<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"/>
javascript——闭包的更多相关文章
- 《Web 前端面试指南》1、JavaScript 闭包深入浅出
闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...
- JavaScript 闭包深入浅出
闭包是什么? 闭包是内部函数可以访问外部函数的变量.它可以访问三个作用域:首先可以访问自己的作用域(也就是定义在大括号内的变量),它也能访问外部函数的变量,和它能访问全局变量. 内部函数不仅可以访问外 ...
- JavaScript闭包(Closure)
JavaScript闭包(Closure) 本文收集了多本书里对JavaScript闭包(Closure)的解释,或许会对理解闭包有一定帮助. <你不知道的JavsScript> Java ...
- Javascript闭包和C#匿名函数对比分析
C#中引入匿名函数,多少都是受到Javascript的闭包语法和面向函数编程语言的影响.人们发现,在表达式中直接编写函数代码是一种普遍存在的需求,这种语法将比那种必须在某个特定地方定义函数的方式灵活和 ...
- javascript闭包理解
//闭包理解一 function superFun(){ var _super_a='a'; function subfuc(){ console.log(_super_a); } return su ...
- Javascript闭包深入解析及实现方法
1.什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.闭包的特点:1. 作为一个函数变量的一个引用,当函数返回时 ...
- javascript闭包和作用域链
最近在学习前端知识,看到javascript闭包这里总是云里雾里.于是翻阅了好多资料记录下来本人对闭包的理解. 首先,什么是闭包?看了各位大牛的定义和描述各式各样,我个人认为最容易一种说法: 外部函数 ...
- JavaScript闭包深入解析
for (var i=1; i<=5; i++) { setTimeout( function timer() { console.log( i ); }, i*1000 ); } --上面这段 ...
- JavaScript 闭包系列二(匿名函数及函数的闭包)
一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) { return 2*x; } 2)Function构造函数,把参数列表和函数体都作为字 ...
- JavaScript闭包模型
JavaScript闭包模型 ----- [原创翻译]2016-09-01 09:32:22 < 一> 闭包并不神秘 本文利用JavaScript代码来阐述闭包,目的是为了使普通 ...
随机推荐
- HDU 5916 Harmonic Value Description 【构造】(2016中国大学生程序设计竞赛(长春))
Harmonic Value Description Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- app.config应该放哪?
一:做了一个简单的三层构架的小例子,在主项目里调用工具类的方法实现在数据库里添加一条信息.先看下错误的提示信息是什么样的,如下图一,图二是调用工具类.直接在工具类里写上连接字符串就没问题,如果写到ap ...
- 性能指标--并发用户数(Concurrent Users)
并发用户数是指:在某一时间点,与被测目标系统同时进行交互的客户端用户的数量. 并发用户数有以下几种含义: 1. 并发虚拟用户数(Concurrent Virtual Users,Users_CVU) ...
- Linux自定义命令
linux自定义命令,就是给当前命令取个别名.比如:ls 列出当前的文件,rm + 文件名 就能删除该文件,如何自定义命令,可以使用alias比如:alias gobin='cd /opt/tomca ...
- wiki 的捐款呼吁有感而发
今早在维基百科上查东西时,网页的最上角出现了一栏小广告,我一看居然是维基创始人发的捐款呼吁,点开后网页内容如下: “ 来自维基百科创办者Jimmy Wales的个人呼吁 ----------- ...
- linux —— 搭建网页项目笔记
导读 本文笔记之用,记录在我在linux下搭建与开发网站时遇到的一些碎片知识,以备将来之需. 目录 数据库相关 1.数据库相关 1) ubuntu 16.04 LTS 下mysql 的安装与使用 安 ...
- c#基础编程—泛型
一.引言 泛型的主要思想是将算法与数据结构完全分离开,使得一次定义的算法能作用于多种数据结构,从而实现高度可重用的开发.泛型,通过参数类型化来实现在同一份代码中操作多种数据类型,利用“参数化类型”将类 ...
- java 深clone和浅clone
1. clone类 public class Person implements Cloneable, Serializable{ /** * */ private static final long ...
- 深入了解VSTS的Unit Test测试属性
深入的了解一下方法上带有的属性的含义.每个方法上几乎都带有TestMethod这个属性,我们直觉告诉我们,这肯定是表示被测试函数的意思.事实也正是如此,在Unit Test里,有许多测试属性,常用的如 ...
- Android 颜色渲染(二) 颜色区域划分原理与实现思路
版权声明:本文为博主原创文章,未经博主允许不得转载. 上一篇讲到颜色选择器,该demo不能选择黑白或者具体区间颜色,这是为什么呢,还是要从原理部分讲起,首先看一下两张图: 图1 ...